Merge branch 'aarch64-stuff' into 'master'

Fix misaligned stack pointer on aarch64

See merge request redox-os/relibc!408
This commit is contained in:
Jeremy Soller
2023-06-13 11:34:49 +00:00
2 changed files with 18 additions and 33 deletions
+4 -7
View File
@@ -97,13 +97,10 @@ core::arch::global_asm!(
.p2align 6
__relibc_internal_rlct_clone_ret:
# Load registers
ldr x8, [sp], #8
ldr x0, [sp], #8
ldr x1, [sp], #8
ldr x2, [sp], #8
ldr x3, [sp], #8
ldr x4, [sp], #8
ldr x5, [sp], #8
ldp x0, x8, [sp], #16
ldp x2, x1, [sp], #16
ldp x4, x3, [sp], #16
ldr x5, [sp], #16
# Call entry point
blr x8
@@ -50,18 +50,12 @@ core::arch::global_asm!(
.globl __relibc_internal_fork_wrapper
.type __relibc_internal_fork_wrapper, @function
__relibc_internal_fork_wrapper:
str x19, [sp, #-8]!
str x20, [sp, #-8]!
str x21, [sp, #-8]!
str x22, [sp, #-8]!
str x23, [sp, #-8]!
str x24, [sp, #-8]!
str x25, [sp, #-8]!
str x26, [sp, #-8]!
str x27, [sp, #-8]!
str x28, [sp, #-8]!
str x29, [sp, #-8]!
str x30, [sp, #-8]!
stp x29, x30, [sp, #-16]!
stp x27, x28, [sp, #-16]!
stp x25, x26, [sp, #-16]!
stp x23, x24, [sp, #-16]!
stp x21, x22, [sp, #-16]!
stp x19, x20, [sp, #-16]!
sub sp, sp, #32
@@ -77,8 +71,7 @@ __relibc_internal_fork_wrapper:
.globl __relibc_internal_fork_ret
.type __relibc_internal_fork_ret, @function
__relibc_internal_fork_ret:
ldr x0, [sp]
ldr x1, [sp, #8]
ldp x0, x1, [sp]
bl __relibc_internal_fork_hook
//TODO: load floating point regs
@@ -88,18 +81,13 @@ __relibc_internal_fork_ret:
.p2align 4
2:
add sp, sp, #32
ldr x30, [sp], #8
ldr x29, [sp], #8
ldr x28, [sp], #8
ldr x27, [sp], #8
ldr x26, [sp], #8
ldr x25, [sp], #8
ldr x24, [sp], #8
ldr x23, [sp], #8
ldr x22, [sp], #8
ldr x21, [sp], #8
ldr x20, [sp], #8
ldr x19, [sp], #8
ldp x19, x20, [sp], #16
ldp x21, x22, [sp], #16
ldp x23, x24, [sp], #16
ldp x25, x26, [sp], #16
ldp x27, x28, [sp], #16
ldp x29, x30, [sp], #16
ret
.size __relibc_internal_fork_ret, . - __relibc_internal_fork_ret"