diff options
author | Waldemar Brodkorb <wbx@openadk.org> | 2024-03-20 09:44:40 +0100 |
---|---|---|
committer | Waldemar Brodkorb <wbx@openadk.org> | 2024-03-20 11:07:24 +0100 |
commit | 6bb2d37af6772cada51b0871d3184f7783779364 (patch) | |
tree | bcfd87bbe6713bb77d7fb7784f293c9fac235c38 /libc/sysdeps/linux/riscv32/clone.S | |
parent | cd5b45d5f755b07d7205ed471ed55422e450ba75 (diff) |
riscv32: sync with riscv64
Diffstat (limited to 'libc/sysdeps/linux/riscv32/clone.S')
-rw-r--r-- | libc/sysdeps/linux/riscv32/clone.S | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/libc/sysdeps/linux/riscv32/clone.S b/libc/sysdeps/linux/riscv32/clone.S index f7684c88d..315de2ac8 100644 --- a/libc/sysdeps/linux/riscv32/clone.S +++ b/libc/sysdeps/linux/riscv32/clone.S @@ -29,6 +29,9 @@ .text LEAF (clone) + /* Align stack to a 128-bit boundary as per RISC-V ABI. */ + andi a1,a1,ALMASK + /* Sanity check arguments. */ beqz a0,L (invalid) /* No NULL function pointers. */ beqz a1,L (invalid) /* No NULL stack pointers. */ @@ -57,7 +60,7 @@ L (invalid): li a0, -EINVAL /* Something bad happened -- no child created. */ L (error): - j __syscall_error + tail __syscall_error END (clone) /* Load up the arguments to the function. Put this block of code in @@ -66,6 +69,9 @@ L (error): ENTRY (__thread_start) L (thread_start): + .cfi_label .Ldummy + cfi_undefined (ra) + /* Restore the arg for user's function. */ REG_L a1,0(sp) /* Function pointer. */ REG_L a0,SZREG(sp) /* Argument pointer. */ |