rtld: Sligtly optimizing .rtld_start on aarch64

Use the LDP (load pair registers) instruction to load entry point
arguments from the stack.

Reviewed by:
Differential Revision:	https://reviews.freebsd.org/D40843
This commit is contained in:
Dmitry Chagin 2023-07-07 19:55:08 +03:00
parent 43e29d03f4
commit 5645dfb41a

View file

@ -32,7 +32,6 @@ __FBSDID("$FreeBSD$");
ENTRY(.rtld_start)
mov x19, x0 /* Put ps_strings in a callee-saved register */
mov x20, sp /* And the stack pointer */
sub sp, sp, #16 /* Make room for obj_main & exit proc */
@ -40,11 +39,9 @@ ENTRY(.rtld_start)
add x2, x1, #8 /* obj_main */
bl _rtld /* Call the loader */
mov x8, x0 /* Backup the entry point */
ldp x2, x1, [sp], #16 /* Load cleanup, obj_main */
ldr x2, [sp] /* Load cleanup */
ldr x1, [sp, #8] /* Load obj_main */
mov x0, x19 /* Restore ps_strings */
mov sp, x20 /* Restore the stack pointer */
br x8 /* Jump to the entry point */
END(.rtld_start)