mirror of
https://github.com/freebsd/freebsd-src
synced 2024-07-24 03:37:16 +00:00
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:
parent
43e29d03f4
commit
5645dfb41a
|
@ -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)
|
||||
|
||||
|
|
Loading…
Reference in a new issue