diff --git a/lib/std/os/linux/riscv32.zig b/lib/std/os/linux/riscv32.zig index ceabe30a87116d5e1ae8114d6f5751c4e15139f4..cb1243a0ca892ab9a39226e11bc645c15704d22f 100644 --- a/lib/std/os/linux/riscv32.zig +++ b/lib/std/os/linux/riscv32.zig @@ -116,6 +116,7 @@ pub fn clone() callconv(.naked) u32 { // syscall(SYS_clone, flags, stack, ptid, tls, ctid) // a7 a0, a1, a2, a3, a4 asm volatile ( + \\ andi a1, a1, -16 \\ # Save func and arg to stack \\ addi a1, a1, -8 \\ sw a0, 0(a1) diff --git a/lib/std/os/linux/riscv64.zig b/lib/std/os/linux/riscv64.zig index 41dabbb47216c84af9e43ecbe8c89853aee7c584..accde6d5e6a06db1cfcd4be94f2165ff2c2b6cc4 100644 --- a/lib/std/os/linux/riscv64.zig +++ b/lib/std/os/linux/riscv64.zig @@ -116,6 +116,7 @@ pub fn clone() callconv(.naked) u64 { // syscall(SYS_clone, flags, stack, ptid, tls, ctid) // a7 a0, a1, a2, a3, a4 asm volatile ( + \\ andi a1, a1, -16 \\ # Save func and arg to stack \\ addi a1, a1, -16 \\ sd a0, 0(a1)