From bf66a7d6b7f17a1404f65e1c53ca08ef4442cec4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Sun, 9 Aug 2026 01:40:19 +0200 Subject: [PATCH] std.os.linux.riscv32/64: align the child stack pointer in clone --- lib/std/os/linux/riscv32.zig | 1 + lib/std/os/linux/riscv64.zig | 1 + 2 files changed, 2 insertions(+) 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) -- 2.54.0