diff --git a/lib/std/Thread.zig b/lib/std/Thread.zig index 25f9146bb0aa6ce8cb6ae4d3744788002bdf2413..59b8a992b1db044fcaf122e8403b6be3f3d63bc6 100644 --- a/lib/std/Thread.zig +++ b/lib/std/Thread.zig @@ -1220,6 +1220,16 @@ const LinuxThreadImpl = struct { : [ptr] "{$16}" (@intFromPtr(self.mapped.ptr)), [len] "{$17}" (self.mapped.len), ), + .arc, .arceb => asm volatile ( + \\ mov r8, 215 # SYS_munmap + \\ trap_s 0 + \\ mov r8, 93 # SYS_exit + \\ mov r0, 0 + \\ trap_s 0 + : + : [ptr] "{r0}" (@intFromPtr(self.mapped.ptr)), + [len] "{r1}" (self.mapped.len), + ), .hexagon => asm volatile ( \\ r6 = #215 // SYS_munmap \\ trap0(#1) diff --git a/lib/std/debug/cpu_context.zig b/lib/std/debug/cpu_context.zig index b4b3e62c5cd960c149c34f4f34220d3e88d3447c..a1b530a9b19f2233e5f5efa9e3b2f408c52f703c 100644 --- a/lib/std/debug/cpu_context.zig +++ b/lib/std/debug/cpu_context.zig @@ -50,7 +50,7 @@ pub fn fromPosixSignalContext(ctx_ptr: ?*const anyopaque) ?Native { }; // I have no idea why the kernel is storing these registers in such a bizarre order... - std.mem.reverse(native.r[0..]); + std.mem.reverse(u32, native.r[0..]); return native; } else if (native_arch == .loongarch32 and native_os == .linux) {