| ... | @@ -33,6 +33,9 @@ comptime { | ... | @@ -33,6 +33,9 @@ comptime { |
| 33 | symbol(&__tls_get_offset, "__tls_get_offset"); | 33 | symbol(&__tls_get_offset, "__tls_get_offset"); |
| 34 | } else { | 34 | } else { |
| 35 | symbol(&__tls_get_addr, "__tls_get_addr"); | 35 | symbol(&__tls_get_addr, "__tls_get_addr"); |
| | 36 | if (native_arch == .m68k) { |
| | 37 | symbol(&__m68k_read_tp, "__m68k_read_tp"); |
| | 38 | } |
| 36 | if (native_arch == .x86) { | 39 | if (native_arch == .x86) { |
| 37 | symbol(&___tls_get_addr, "___tls_get_addr"); | 40 | symbol(&___tls_get_addr, "___tls_get_addr"); |
| 38 | } | 41 | } |
| ... | @@ -724,6 +727,12 @@ inline fn mmap(length: usize) usize { | ... | @@ -724,6 +727,12 @@ inline fn mmap(length: usize) usize { |
| 724 | } | 727 | } |
| 725 | } | 728 | } |
| 726 | | 729 | |
| | 730 | fn __m68k_read_tp() callconv(.c) ?*anyopaque { |
| | 731 | comptime assert(native_arch == .m68k); |
| | 732 | |
| | 733 | return @ptrFromInt(getThreadPointer()); |
| | 734 | } |
| | 735 | |
| 727 | const TlsIndex = switch (native_arch) { | 736 | const TlsIndex = switch (native_arch) { |
| 728 | .x86_64 => extern struct { module: u64, offset: u64 }, // Even for x32... | 737 | .x86_64 => extern struct { module: u64, offset: u64 }, // Even for x32... |
| 729 | else => extern struct { module: usize, offset: usize }, // ...but not MIPS N32! | 738 | else => extern struct { module: usize, offset: usize }, // ...but not MIPS N32! |