From f376cbc37b38794857e63bffc3766ad5cb8482c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Sun, 9 Aug 2026 05:19:11 +0200 Subject: [PATCH] std.debug.cpu_context.Sparc: align to 8 bytes to make std on 32-bit safe Otherwise we might get SIGBUS due to misalignment. --- lib/std/debug/cpu_context.zig | 102 +++++++++++++++++----------------- 1 file changed, 51 insertions(+), 51 deletions(-) diff --git a/lib/std/debug/cpu_context.zig b/lib/std/debug/cpu_context.zig index 0aa269f38b5d777d0b576e1e71e2e038e3b6a023..578f840f8cb60a86a90b4f12d9e8c1c32bc0d335 100644 --- a/lib/std/debug/cpu_context.zig +++ b/lib/std/debug/cpu_context.zig @@ -1517,7 +1517,7 @@ const S390x = extern struct { /// This is an `extern struct` so that inline assembly in `current` can use field offsets. const Sparc = extern struct { - g: [8]Gpr, + g: [8]Gpr align(8), // Align to make `std` safe on 32-bit. o: [8]Gpr, l: [8]Gpr, i: [8]Gpr, @@ -1530,63 +1530,63 @@ const Sparc = extern struct { var ctx: Sparc = undefined; asm volatile (if (Gpr == u64) - \\ stx %g0, [%l0 + 0] - \\ stx %g1, [%l0 + 8] - \\ stx %g2, [%l0 + 16] - \\ stx %g3, [%l0 + 24] - \\ stx %g4, [%l0 + 32] - \\ stx %g5, [%l0 + 40] - \\ stx %g6, [%l0 + 48] - \\ stx %g7, [%l0 + 56] - \\ stx %o0, [%l0 + 64] - \\ stx %o1, [%l0 + 72] - \\ stx %o2, [%l0 + 80] - \\ stx %o3, [%l0 + 88] - \\ stx %o4, [%l0 + 96] - \\ stx %o5, [%l0 + 104] - \\ stx %o6, [%l0 + 112] - \\ stx %o7, [%l0 + 120] - \\ stx %l0, [%l0 + 128] - \\ stx %l1, [%l0 + 136] - \\ stx %l2, [%l0 + 144] - \\ stx %l3, [%l0 + 152] - \\ stx %l4, [%l0 + 160] - \\ stx %l5, [%l0 + 168] - \\ stx %l6, [%l0 + 176] - \\ stx %l7, [%l0 + 184] - \\ stx %i0, [%l0 + 192] - \\ stx %i1, [%l0 + 200] - \\ stx %i2, [%l0 + 208] - \\ stx %i3, [%l0 + 216] - \\ stx %i4, [%l0 + 224] - \\ stx %i5, [%l0 + 232] - \\ stx %i6, [%l0 + 240] - \\ stx %i7, [%l0 + 248] + \\ stx %%g0, [%%l0 + 0] + \\ stx %%g1, [%%l0 + 8] + \\ stx %%g2, [%%l0 + 16] + \\ stx %%g3, [%%l0 + 24] + \\ stx %%g4, [%%l0 + 32] + \\ stx %%g5, [%%l0 + 40] + \\ stx %%g6, [%%l0 + 48] + \\ stx %%g7, [%%l0 + 56] + \\ stx %%o0, [%%l0 + 64] + \\ stx %%o1, [%%l0 + 72] + \\ stx %%o2, [%%l0 + 80] + \\ stx %%o3, [%%l0 + 88] + \\ stx %%o4, [%%l0 + 96] + \\ stx %%o5, [%%l0 + 104] + \\ stx %%o6, [%%l0 + 112] + \\ stx %%o7, [%%l0 + 120] + \\ stx %%l0, [%%l0 + 128] + \\ stx %%l1, [%%l0 + 136] + \\ stx %%l2, [%%l0 + 144] + \\ stx %%l3, [%%l0 + 152] + \\ stx %%l4, [%%l0 + 160] + \\ stx %%l5, [%%l0 + 168] + \\ stx %%l6, [%%l0 + 176] + \\ stx %%l7, [%%l0 + 184] + \\ stx %%i0, [%%l0 + 192] + \\ stx %%i1, [%%l0 + 200] + \\ stx %%i2, [%%l0 + 208] + \\ stx %%i3, [%%l0 + 216] + \\ stx %%i4, [%%l0 + 224] + \\ stx %%i5, [%%l0 + 232] + \\ stx %%i6, [%%l0 + 240] + \\ stx %%i7, [%%l0 + 248] \\ call 1f \\ nop \\1: - \\ stx %o7, [%l0 + 256] + \\ stx %%o7, [%%l0 + 256] else - \\ std %g0, [%l0 + 0] - \\ std %g2, [%l0 + 8] - \\ std %g4, [%l0 + 16] - \\ std %g6, [%l0 + 24] - \\ std %o0, [%l0 + 32] - \\ std %o2, [%l0 + 40] - \\ std %o4, [%l0 + 48] - \\ std %o6, [%l0 + 56] - \\ std %l0, [%l0 + 64] - \\ std %l2, [%l0 + 72] - \\ std %l4, [%l0 + 80] - \\ std %l6, [%l0 + 88] - \\ std %i0, [%l0 + 96] - \\ std %i2, [%l0 + 104] - \\ std %i4, [%l0 + 112] - \\ std %i6, [%l0 + 120] + \\ std %%g0, [%%l0 + 0] + \\ std %%g2, [%%l0 + 8] + \\ std %%g4, [%%l0 + 16] + \\ std %%g6, [%%l0 + 24] + \\ std %%o0, [%%l0 + 32] + \\ std %%o2, [%%l0 + 40] + \\ std %%o4, [%%l0 + 48] + \\ std %%o6, [%%l0 + 56] + \\ std %%l0, [%%l0 + 64] + \\ std %%l2, [%%l0 + 72] + \\ std %%l4, [%%l0 + 80] + \\ std %%l6, [%%l0 + 88] + \\ std %%i0, [%%l0 + 96] + \\ std %%i2, [%%l0 + 104] + \\ std %%i4, [%%l0 + 112] + \\ std %%i6, [%%l0 + 120] \\ call 1f \\ nop \\1: - \\ st %o7, [%l0 + 128] + \\ st %%o7, [%%l0 + 128] : : [ctx] "{l0}" (&ctx), : .{ .o7 = true, .memory = true }); -- 2.54.0