diff --git a/lib/std/start.zig b/lib/std/start.zig index 261b355c34..89f5eb0b1f 100644 --- a/lib/std/start.zig +++ b/lib/std/start.zig @@ -198,13 +198,16 @@ fn _start() callconv(.Naked) noreturn { ); }, .powerpc => { + // Setup the initial stack frame and clear the back chain pointer. argc_argv_ptr = asm volatile ( - \\ mr 3, 1 + \\ mr 4, 1 \\ li 0, 0 + \\ stwu 1,-16(1) + \\ stw 0, 0(1) \\ mtlr 0 - : [argc] "={r3}" (-> [*]usize) + : [argc] "={r4}" (-> [*]usize) : - : "r0", "r3" + : "r0" ); }, .powerpc64le => {