| author | |
| committer | |
| log | 043bd716210b0233f1bc0bb90a8fb063cd63d0b8 |
| tree | bcdd994a11bcef3e1b3a679e31159141bb0275fd |
| parent | b1db696c10f3895d59d26ddfb4f2ef7a6e7384fb |
2 files changed, 7 insertions(+), 3 deletions(-)
std/os/linux/tls.zig+2-3| ... | ... | @@ -109,9 +109,8 @@ pub var tls_image: ?TLSImage = null; |
| 109 | 109 | pub fn setThreadPointer(addr: usize) void { |
| 110 | 110 | switch (builtin.arch) { |
| 111 | 111 | .x86_64 => { |
| 112 | const ARCH_SET_FS = 0x1002; | |
| 113 | const rc = std.os.linux.syscall2(std.os.linux.SYS_arch_prctl, ARCH_SET_FS, addr); | |
| 114 | // arch_prctl is documented to never fail | |
| 112 | const rc = std.os.linux.syscall2(std.os.linux.SYS_arch_prctl, | |
| 113 | std.os.linux.ARCH_SET_FS, addr); | |
| 115 | 114 | assert(rc == 0); |
| 116 | 115 | }, |
| 117 | 116 | .aarch64 => { |
std/os/linux/x86_64.zig+5| ... | ... | @@ -388,6 +388,11 @@ pub const VDSO_CGT_VER = "LINUX_2.6"; |
| 388 | 388 | pub const VDSO_GETCPU_SYM = "__vdso_getcpu"; |
| 389 | 389 | pub const VDSO_GETCPU_VER = "LINUX_2.6"; |
| 390 | 390 | |
| 391 | pub const ARCH_SET_GS = 0x1001; | |
| 392 | pub const ARCH_SET_FS = 0x1002; | |
| 393 | pub const ARCH_GET_FS = 0x1003; | |
| 394 | pub const ARCH_GET_GS = 0x1004; | |
| 395 | ||
| 391 | 396 | pub fn syscall0(number: usize) usize { |
| 392 | 397 | return asm volatile ("syscall" |
| 393 | 398 | : [ret] "={rax}" (-> usize) |