| ... | @@ -10537,6 +10537,131 @@ pub const sendfile = switch (native_os) { | ... | @@ -10537,6 +10537,131 @@ pub const sendfile = switch (native_os) { |
| 10537 | pub extern "c" fn getauxval(type: c_ulong) c_ulong; | 10537 | pub extern "c" fn getauxval(type: c_ulong) c_ulong; |
| 10538 | pub extern "c" fn elf_aux_info(aux: c_int, buf: *anyopaque, buflen: c_int) c_int; | 10538 | pub extern "c" fn elf_aux_info(aux: c_int, buf: *anyopaque, buflen: c_int) c_int; |
| 10539 | | 10539 | |
| | 10540 | pub const HWCAP = switch (native_os) { |
| | 10541 | .freebsd => switch (native_arch) { |
| | 10542 | // FreeBSD deliberately matches the Linux ABI for AT_HWCAP... |
| | 10543 | else => std.os.linux.HWCAP, |
| | 10544 | // ... but because Linux went the SYS_riscv_hwprobe route, FreeBSD |
| | 10545 | // defines more bits than Linux does: |
| | 10546 | .riscv64 => struct { |
| | 10547 | pub const ISA_A = 1 << 0; |
| | 10548 | pub const ISA_B = 1 << 1; |
| | 10549 | pub const ISA_C = 1 << 2; |
| | 10550 | pub const ISA_D = 1 << 3; |
| | 10551 | pub const ISA_F = 1 << 5; |
| | 10552 | pub const ISA_H = 1 << 7; |
| | 10553 | pub const ISA_I = 1 << 8; |
| | 10554 | pub const ISA_M = 1 << 12; |
| | 10555 | pub const ISA_V = 1 << 21; |
| | 10556 | }, |
| | 10557 | }, |
| | 10558 | .illumos => switch (native_arch) { |
| | 10559 | .x86, .x86_64 => struct { |
| | 10560 | pub const FPU = 1 << 0; |
| | 10561 | pub const TSC = 1 << 1; |
| | 10562 | pub const CX8 = 1 << 2; |
| | 10563 | pub const SEP = 1 << 3; |
| | 10564 | pub const AMD_SYSC = 1 << 4; |
| | 10565 | pub const CMOV = 1 << 5; |
| | 10566 | pub const MMX = 1 << 6; |
| | 10567 | pub const AMD_MMX = 1 << 7; |
| | 10568 | pub const AMD_3DNow = 1 << 8; |
| | 10569 | pub const AMD_3DNowx = 1 << 9; |
| | 10570 | pub const FXSR = 1 << 10; |
| | 10571 | pub const SSE = 1 << 11; |
| | 10572 | pub const SSE2 = 1 << 12; |
| | 10573 | pub const PAUSE = 1 << 13; |
| | 10574 | pub const SSE3 = 1 << 14; |
| | 10575 | pub const MON = 1 << 15; |
| | 10576 | pub const CX16 = 1 << 16; |
| | 10577 | pub const AHF = 1 << 17; |
| | 10578 | pub const TSCP = 1 << 18; |
| | 10579 | pub const AMD_SSE4A = 1 << 19; |
| | 10580 | pub const POPCNT = 1 << 20; |
| | 10581 | pub const AMD_LZCNT = 1 << 21; |
| | 10582 | pub const SSSE3 = 1 << 22; |
| | 10583 | pub const SSE4_1 = 1 << 23; |
| | 10584 | pub const SSE4_2 = 1 << 24; |
| | 10585 | pub const MOVBE = 1 << 25; |
| | 10586 | pub const AES = 1 << 26; |
| | 10587 | pub const PCLMULQDQ = 1 << 27; |
| | 10588 | pub const XSAVE = 1 << 28; |
| | 10589 | pub const AVX = 1 << 29; |
| | 10590 | pub const VMX = 1 << 30; |
| | 10591 | pub const AMD_SVM = 1 << 31; |
| | 10592 | |
| | 10593 | pub const @"2" = struct { |
| | 10594 | pub const F16C = 1 << 0; |
| | 10595 | pub const RDRAND = 1 << 1; |
| | 10596 | pub const BMI1 = 1 << 2; |
| | 10597 | pub const BMI2 = 1 << 3; |
| | 10598 | pub const FMA = 1 << 4; |
| | 10599 | pub const AVX2 = 1 << 5; |
| | 10600 | pub const ADX = 1 << 6; |
| | 10601 | pub const RDSEED = 1 << 7; |
| | 10602 | pub const AVX512F = 1 << 8; |
| | 10603 | pub const AVX512DQ = 1 << 9; |
| | 10604 | pub const AVX512IFMA = 1 << 10; |
| | 10605 | pub const AVX512PF = 1 << 11; |
| | 10606 | pub const AVX512ER = 1 << 12; |
| | 10607 | pub const AVX512CD = 1 << 13; |
| | 10608 | pub const AVX512BW = 1 << 14; |
| | 10609 | pub const AVX512VL = 1 << 15; |
| | 10610 | pub const AVX512VBMI = 1 << 16; |
| | 10611 | pub const AVX512VPOPCDQ = 1 << 17; |
| | 10612 | pub const AVX512_4NNIW = 1 << 18; |
| | 10613 | pub const AVX512_4FMAPS = 1 << 19; |
| | 10614 | pub const SHA = 1 << 20; |
| | 10615 | pub const FSGSBASE = 1 << 21; |
| | 10616 | pub const CLFLUSHOPT = 1 << 22; |
| | 10617 | pub const CLWB = 1 << 23; |
| | 10618 | pub const MONITORX = 1 << 24; |
| | 10619 | pub const CLZERO = 1 << 25; |
| | 10620 | pub const AVX512_VNNI = 1 << 26; |
| | 10621 | pub const VPCLMULQDQ = 1 << 27; |
| | 10622 | pub const VAES = 1 << 28; |
| | 10623 | }; |
| | 10624 | }, |
| | 10625 | else => struct {}, |
| | 10626 | }, |
| | 10627 | .linux => std.os.linux.HWCAP, |
| | 10628 | .openbsd => switch (native_arch) { |
| | 10629 | // Same deal as for FreeBSD. |
| | 10630 | else => std.os.linux.HWCAP, |
| | 10631 | .riscv64 => struct { |
| | 10632 | pub const ISA_A = 1 << 0; |
| | 10633 | pub const ISA_B = 1 << 1; |
| | 10634 | pub const ISA_C = 1 << 2; |
| | 10635 | pub const ISA_D = 1 << 3; |
| | 10636 | pub const ISA_F = 1 << 5; |
| | 10637 | pub const ISA_H = 1 << 7; |
| | 10638 | pub const ISA_I = 1 << 8; |
| | 10639 | pub const ISA_M = 1 << 12; |
| | 10640 | pub const ISA_V = 1 << 21; |
| | 10641 | |
| | 10642 | pub const @"2" = struct { |
| | 10643 | pub const ISA_ZBA = 1 << 0; |
| | 10644 | pub const ISA_ZBB = 1 << 1; |
| | 10645 | pub const ISA_ZBC = 1 << 2; |
| | 10646 | pub const ISA_ZBS = 1 << 3; |
| | 10647 | pub const ISA_ZFH = 1 << 4; |
| | 10648 | pub const ISA_ZKT = 1 << 5; |
| | 10649 | pub const ISA_ZVBB = 1 << 6; |
| | 10650 | pub const ISA_ZVBC = 1 << 7; |
| | 10651 | pub const ISA_ZVFH = 1 << 8; |
| | 10652 | pub const ISA_ZVKG = 1 << 9; |
| | 10653 | pub const ISA_ZVKNED = 1 << 10; |
| | 10654 | pub const ISA_ZVKNHA = 1 << 11; |
| | 10655 | pub const ISA_ZVKNHB = 1 << 12; |
| | 10656 | pub const ISA_ZVKSED = 1 << 13; |
| | 10657 | pub const ISA_ZVKSH = 1 << 14; |
| | 10658 | pub const ISA_ZVKT = 1 << 15; |
| | 10659 | }; |
| | 10660 | }, |
| | 10661 | }, |
| | 10662 | else => struct {}, |
| | 10663 | }; |
| | 10664 | |
| 10540 | pub extern "c" fn dl_iterate_phdr(callback: dl_iterate_phdr_callback, data: ?*anyopaque) c_int; | 10665 | pub extern "c" fn dl_iterate_phdr(callback: dl_iterate_phdr_callback, data: ?*anyopaque) c_int; |
| 10541 | | 10666 | |
| 10542 | pub const sigaltstack = switch (native_os) { | 10667 | pub const sigaltstack = switch (native_os) { |