diff --git a/lib/std/start.zig b/lib/std/start.zig index d97381ef0dcef3a3aab9e94ade1588c5b882e78e..74e177ce0b17f45137418e8a01340c61bd0024a6 100644 --- a/lib/std/start.zig +++ b/lib/std/start.zig @@ -300,6 +300,15 @@ fn _start() callconv(.Naked) noreturn { \\ and sp, x0, #-16 \\ b %[posixCallMainAndExit] , + .arc => + // The `arc` tag currently means ARCv2, which has an unusually low stack alignment + // requirement. ARCv3 increases it from 4 to 16, but we don't support ARCv3 yet. + \\ mov fp, 0 + \\ mov blink, 0 + \\ mov r0, sp + \\ and sp, sp, -4 + \\ b %[posixCallMainAndExit] + , .arm, .armeb, .thumb, .thumbeb => \\ mov fp, #0 \\ mov lr, #0