diff --git a/lib/csu/aarch64/crti.S b/lib/csu/aarch64/crti.S --- a/lib/csu/aarch64/crti.S +++ b/lib/csu/aarch64/crti.S @@ -35,14 +35,14 @@ .globl _init .type _init,@function _init: - sub sp, sp, #16 - str lr, [sp] + stp x29, x30, [sp, #-16]! + mov x29, sp .section .fini,"ax",@progbits .align 4 .globl _fini .type _fini,@function _fini: - sub sp, sp, #16 - str lr, [sp] + stp x29, x30, [sp, #-16]! + mov x29, sp diff --git a/lib/csu/aarch64/crtn.S b/lib/csu/aarch64/crtn.S --- a/lib/csu/aarch64/crtn.S +++ b/lib/csu/aarch64/crtn.S @@ -31,14 +31,12 @@ __FBSDID("$FreeBSD$"); .section .init,"ax",@progbits - ldr lr, [sp] - add sp, sp, #16 + ldp x29, x30, [sp], #16 ret .section .fini,"ax",@progbits - ldr lr, [sp] - add sp, sp, #16 + ldp x29, x30, [sp], #16 ret .section .note.GNU-stack,"",%progbits