| ... | ... | @@ -3258,6 +3258,44 @@ pub fn sysinfo(info: *Sysinfo) usize { |
| 3258 | 3258 | return syscall1(.sysinfo, @intFromPtr(info)); |
| 3259 | 3259 | } |
| 3260 | 3260 | |
| 3261 | const VdsoSysRiscvHwprobe = *align(1) const fn ( |
| 3262 | pairs: [*]riscv_hwprobe, |
| 3263 | pair_count: usize, |
| 3264 | cpusetsize: usize, |
| 3265 | cpus: ?[*]cpu_set_t, |
| 3266 | flags: u32, |
| 3267 | ) callconv(.c) usize; |
| 3268 | var vdso_sys_riscv_hwprobe: ?VdsoSysRiscvHwprobe = &init_vdso_sys_riscv_hwprobe; |
| 3269 | |
| 3270 | fn init_vdso_sys_riscv_hwprobe( |
| 3271 | pairs: [*]riscv_hwprobe, |
| 3272 | pair_count: usize, |
| 3273 | cpusetsize: usize, |
| 3274 | cpus: ?[*]cpu_set_t, |
| 3275 | flags: u32, |
| 3276 | ) callconv(.c) usize { |
| 3277 | const ptr: ?VdsoSysRiscvHwprobe = @ptrFromInt(vdso.lookup(VDSO.HWPROBE_VER, VDSO.HWPROBE_SYM)); |
| 3278 | @atomicStore(?VdsoSysRiscvHwprobe, &vdso_sys_riscv_hwprobe, ptr, .monotonic); |
| 3279 | if (ptr) |f| return f(pairs, pair_count, cpusetsize, cpus, flags); |
| 3280 | return @bitCast(-@as(isize, @backingInt(E.NOSYS))); |
| 3281 | } |
| 3282 | |
| 3283 | pub fn sys_riscv_hwprobe( |
| 3284 | pairs: [*]riscv_hwprobe, |
| 3285 | pair_count: usize, |
| 3286 | cpusetsize: usize, |
| 3287 | cpus: ?[*]cpu_set_t, |
| 3288 | flags: u32, |
| 3289 | ) usize { |
| 3290 | if (VDSO != void) { |
| 3291 | const ptr = @atomicLoad(?VdsoSysRiscvHwprobe, &vdso_sys_riscv_hwprobe, .unordered); |
| 3292 | if (ptr) |f| { |
| 3293 | if (f(pairs, pair_count, cpusetsize, cpus, flags) == 0) return 0; |
| 3294 | } |
| 3295 | } |
| 3296 | return syscall5(.riscv_hwprobe, @intFromPtr(pairs), pair_count, cpusetsize, @intFromPtr(cpus), flags); |
| 3297 | } |
| 3298 | |
| 3261 | 3299 | pub const E = switch (native_arch) { |
| 3262 | 3300 | .mips, .mipsel, .mips64, .mips64el => enum(u16) { |
| 3263 | 3301 | /// No error occurred. |
| ... | ... | @@ -10920,3 +10958,127 @@ pub const cmsghdr = extern struct { |
| 10920 | 10958 | level: i32, |
| 10921 | 10959 | type: i32, |
| 10922 | 10960 | }; |
| 10961 | |
| 10962 | pub const riscv_hwprobe = extern struct { |
| 10963 | key: i64, |
| 10964 | value: u64, |
| 10965 | }; |
| 10966 | |
| 10967 | pub const RISCV_HWPROBE = struct { |
| 10968 | pub const KEY = struct { |
| 10969 | pub const MVENDORID = 0; |
| 10970 | pub const MARCHID = 1; |
| 10971 | pub const MIMPID = 2; |
| 10972 | pub const BASE_BEHAVIOR = 3; |
| 10973 | pub const IMA_EXT_0 = 4; |
| 10974 | pub const CPUPERF_0 = 5; |
| 10975 | pub const ZICBOZ_BLOCK_SIZE = 6; |
| 10976 | pub const HIGHEST_VIRT_ADDRESS = 7; |
| 10977 | pub const TIME_CSR_FREQ = 8; |
| 10978 | pub const MISALIGNED_SCALAR_PERF = 9; |
| 10979 | pub const MISALIGNED_VECTOR_PERF = 10; |
| 10980 | pub const VENDOR_EXT_THEAD_0 = 11; |
| 10981 | pub const ZICBOM_BLOCK_SIZE = 12; |
| 10982 | pub const VENDOR_EXT_SIFIVE_0 = 13; |
| 10983 | pub const VENDOR_EXT_MIPS_0 = 14; |
| 10984 | pub const ZICBOP_BLOCK_SIZE = 15; |
| 10985 | pub const IMA_EXT_1 = 16; |
| 10986 | }; |
| 10987 | |
| 10988 | pub const FLAGS_WHICH_CPUS = 1 << 0; |
| 10989 | |
| 10990 | pub const BASE_BEHAVIOR_IMA = 1 << 0; |
| 10991 | |
| 10992 | pub const IMA_EXT_0 = struct { |
| 10993 | pub const IMA_FD = 1 << 0; |
| 10994 | pub const IMA_C = 1 << 1; |
| 10995 | pub const IMA_V = 1 << 2; |
| 10996 | pub const EXT_ZBA = 1 << 3; |
| 10997 | pub const EXT_ZBB = 1 << 4; |
| 10998 | pub const EXT_ZBS = 1 << 5; |
| 10999 | pub const EXT_ZICBOZ = 1 << 6; |
| 11000 | pub const EXT_ZBC = 1 << 7; |
| 11001 | pub const EXT_ZBKB = 1 << 8; |
| 11002 | pub const EXT_ZBKC = 1 << 9; |
| 11003 | pub const EXT_ZBKX = 1 << 10; |
| 11004 | pub const EXT_ZKND = 1 << 11; |
| 11005 | pub const EXT_ZKNE = 1 << 12; |
| 11006 | pub const EXT_ZKNH = 1 << 13; |
| 11007 | pub const EXT_ZKSED = 1 << 14; |
| 11008 | pub const EXT_ZKSH = 1 << 15; |
| 11009 | pub const EXT_ZKT = 1 << 16; |
| 11010 | pub const EXT_ZVBB = 1 << 17; |
| 11011 | pub const EXT_ZVBC = 1 << 18; |
| 11012 | pub const EXT_ZVKB = 1 << 19; |
| 11013 | pub const EXT_ZVKG = 1 << 20; |
| 11014 | pub const EXT_ZVKNED = 1 << 21; |
| 11015 | pub const EXT_ZVKNHA = 1 << 22; |
| 11016 | pub const EXT_ZVKNHB = 1 << 23; |
| 11017 | pub const EXT_ZVKSED = 1 << 24; |
| 11018 | pub const EXT_ZVKSH = 1 << 25; |
| 11019 | pub const EXT_ZVKT = 1 << 26; |
| 11020 | pub const EXT_ZFH = 1 << 27; |
| 11021 | pub const EXT_ZFHMIN = 1 << 28; |
| 11022 | pub const EXT_ZIHINTNTL = 1 << 29; |
| 11023 | pub const EXT_ZVFH = 1 << 30; |
| 11024 | pub const EXT_ZVFHMIN = 1 << 31; |
| 11025 | pub const EXT_ZFA = 1 << 32; |
| 11026 | pub const EXT_ZTSO = 1 << 33; |
| 11027 | pub const EXT_ZACAS = 1 << 34; |
| 11028 | pub const EXT_ZICOND = 1 << 35; |
| 11029 | pub const EXT_ZIHINTPAUSE = 1 << 36; |
| 11030 | pub const EXT_ZVE32X = 1 << 37; |
| 11031 | pub const EXT_ZVE32F = 1 << 38; |
| 11032 | pub const EXT_ZVE64X = 1 << 39; |
| 11033 | pub const EXT_ZVE64F = 1 << 40; |
| 11034 | pub const EXT_ZVE64D = 1 << 41; |
| 11035 | pub const EXT_ZIMOP = 1 << 42; |
| 11036 | pub const EXT_ZCA = 1 << 43; |
| 11037 | pub const EXT_ZCB = 1 << 44; |
| 11038 | pub const EXT_ZCD = 1 << 45; |
| 11039 | pub const EXT_ZCF = 1 << 46; |
| 11040 | pub const EXT_ZCMOP = 1 << 47; |
| 11041 | pub const EXT_ZAWRS = 1 << 48; |
| 11042 | pub const EXT_SUPM = 1 << 49; |
| 11043 | pub const EXT_ZICNTR = 1 << 50; |
| 11044 | pub const EXT_ZIHPM = 1 << 51; |
| 11045 | pub const EXT_ZFBFMIN = 1 << 52; |
| 11046 | pub const EXT_ZVFBFMIN = 1 << 53; |
| 11047 | pub const EXT_ZVFBFWMA = 1 << 54; |
| 11048 | pub const EXT_ZICBOM = 1 << 55; |
| 11049 | pub const EXT_ZAAMO = 1 << 56; |
| 11050 | pub const EXT_ZALRSC = 1 << 57; |
| 11051 | pub const EXT_ZABHA = 1 << 58; |
| 11052 | pub const EXT_ZALASR = 1 << 59; |
| 11053 | pub const EXT_ZICBOP = 1 << 60; |
| 11054 | pub const EXT_ZILSD = 1 << 61; |
| 11055 | pub const EXT_ZCLSD = 1 << 62; |
| 11056 | pub const EXT_ZICFILP = 1 << 63; |
| 11057 | }; |
| 11058 | |
| 11059 | pub const IMA_EXT_1_EXT_ZICFISS = 1 << 0; |
| 11060 | |
| 11061 | pub const MISALIGNED_SCALAR = struct { |
| 11062 | pub const UNKNOWN = 0; |
| 11063 | pub const EMULATED = 1; |
| 11064 | pub const SLOW = 2; |
| 11065 | pub const FAST = 3; |
| 11066 | pub const UNSUPPORTED = 4; |
| 11067 | }; |
| 11068 | |
| 11069 | pub const MISALIGNED_VECTOR = struct { |
| 11070 | pub const UNKNOWN = 0; |
| 11071 | pub const SLOW = 2; |
| 11072 | pub const FAST = 3; |
| 11073 | pub const UNSUPPORTED = 4; |
| 11074 | }; |
| 11075 | |
| 11076 | pub const MIPS_VENDOR_EXT_XMIPSEXECTL = 1 << 0; |
| 11077 | |
| 11078 | pub const SIFIVE_VENDOR_EXT = struct { |
| 11079 | pub const XSFVQMACCDOD = 1 << 0; |
| 11080 | pub const XSFVQMACCQOQ = 1 << 1; |
| 11081 | pub const XSFVFNRCLIPXFQF = 1 << 2; |
| 11082 | pub const XSFVFWMACCQQQ = 1 << 3; |
| 11083 | }; |
| 11084 | }; |