diff --git a/lib/std/os/linux/tls.zig b/lib/std/os/linux/tls.zig index 1ca38c2ebd9ab6dcf8e34c8b525a21cce348a93b..212de9ccb28846f008f4d0421db01cfbc6494a86 100644 --- a/lib/std/os/linux/tls.zig +++ b/lib/std/os/linux/tls.zig @@ -70,6 +70,8 @@ const current_variant: Variant = switch (native_arch) { .thumb, .thumbeb, => .I_original, + .loongarch32, + .loongarch64, .m68k, .mips, .mipsel, @@ -243,6 +245,13 @@ pub fn setThreadPointer(addr: usize) void { const rc = linux.syscall1(.set_thread_area, addr); assert(rc == 0); }, + .loongarch32, .loongarch64 => { + asm volatile ( + \\ mv tp, %[addr] + : + : [addr] "r" (addr), + ); + }, .riscv32, .riscv64 => { asm volatile ( \\ mv tp, %[addr]