diff --git a/lib/compiler_rt/elf/tls.zig b/lib/compiler_rt/elf/tls.zig index 1d53b6de023feb126a9a459a642ed7798ff414c8..fd5f8fe6913253af4d950c4b921f088cd708cb93 100644 --- a/lib/compiler_rt/elf/tls.zig +++ b/lib/compiler_rt/elf/tls.zig @@ -33,6 +33,9 @@ comptime { symbol(&__tls_get_offset, "__tls_get_offset"); } else { symbol(&__tls_get_addr, "__tls_get_addr"); + if (native_arch == .m68k) { + symbol(&__m68k_read_tp, "__m68k_read_tp"); + } if (native_arch == .x86) { symbol(&___tls_get_addr, "___tls_get_addr"); } @@ -724,6 +727,12 @@ inline fn mmap(length: usize) usize { } } +fn __m68k_read_tp() callconv(.c) ?*anyopaque { + comptime assert(native_arch == .m68k); + + return @ptrFromInt(getThreadPointer()); +} + const TlsIndex = switch (native_arch) { .x86_64 => extern struct { module: u64, offset: u64 }, // Even for x32... else => extern struct { module: usize, offset: usize }, // ...but not MIPS N32!