authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-10-18 15:01:15+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-10-18 22:26:52+02:00
log2d5cdfcfc2f073111c42940475d5126c3ea50e5c
treee2e32490e5907d3d4c03010c0ce8aadf7ea01450
parent0d2d51dd8c00af71e19626aeb50dd7d9ff63ccf7
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

std.start: align stack pointer according to ARC v3 ABI


1 files changed, 2 insertions(+), 3 deletions(-)

lib/std/start.zig+2-3
...@@ -253,12 +253,11 @@ fn _start() callconv(.naked) noreturn {...@@ -253,12 +253,11 @@ fn _start() callconv(.naked) noreturn {
253 \\ b %[posixCallMainAndExit]253 \\ b %[posixCallMainAndExit]
254 ,254 ,
255 .arc =>255 .arc =>
256 // The `arc` tag currently means ARC v1 and v2, which have an unusually low stack256 // ARC v1 and v2 had a very low stack alignment requirement of 4; v3 increased it to 16.
257 // alignment requirement. ARC v3 increases it from 4 to 16, but we don't support v3 yet.
258 \\ mov fp, 0257 \\ mov fp, 0
259 \\ mov blink, 0258 \\ mov blink, 0
260 \\ mov r0, sp259 \\ mov r0, sp
261 \\ and sp, sp, -4260 \\ and sp, sp, -16
262 \\ b %[posixCallMainAndExit]261 \\ b %[posixCallMainAndExit]
263 ,262 ,
264 .arm, .armeb, .thumb, .thumbeb =>263 .arm, .armeb, .thumb, .thumbeb =>