diff options
Diffstat (limited to 'xpcom/reflect/xptcall/md/unix/xptcinvoke_asm_aarch64.s')
-rw-r--r-- | xpcom/reflect/xptcall/md/unix/xptcinvoke_asm_aarch64.s | 35 |
1 files changed, 30 insertions, 5 deletions
diff --git a/xpcom/reflect/xptcall/md/unix/xptcinvoke_asm_aarch64.s b/xpcom/reflect/xptcall/md/unix/xptcinvoke_asm_aarch64.s index efe691a683..69a55b1c1c 100644 --- a/xpcom/reflect/xptcall/md/unix/xptcinvoke_asm_aarch64.s +++ b/xpcom/reflect/xptcall/md/unix/xptcinvoke_asm_aarch64.s @@ -3,20 +3,36 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - .section ".text" - .globl _NS_InvokeByIndex +#ifdef __APPLE__ +#define SYM(x) _ ## x +#else +#define SYM(x) x +#endif + + .text + .align 2 + .globl SYM(_NS_InvokeByIndex) +#ifndef __APPLE__ .type _NS_InvokeByIndex,@function +#endif /* * _NS_InvokeByIndex(nsISupports* that, uint32_t methodIndex, * uint32_t paramCount, nsXPTCVariant* params) */ -_NS_InvokeByIndex: +SYM(_NS_InvokeByIndex): + .cfi_startproc # set up frame stp x29, x30, [sp,#-32]! + .cfi_adjust_cfa_offset 32 + .cfi_rel_offset x29, 0 + .cfi_rel_offset x30, 8 mov x29, sp + .cfi_def_cfa_register x29 stp x19, x20, [sp,#16] + .cfi_rel_offset x19, 16 + .cfi_rel_offset x20, 24 # save methodIndex across function calls mov w20, w1 @@ -37,7 +53,7 @@ _NS_InvokeByIndex: # start of stack area passed to invoke_copy_to_stack mov x0, sp - bl invoke_copy_to_stack + bl SYM(invoke_copy_to_stack) # load arguments passed in r0-r7 ldp x6, x7, [sp, #48] @@ -58,10 +74,19 @@ _NS_InvokeByIndex: blr x16 add sp, sp, w19, uxth #3 + .cfi_def_cfa_register sp ldp x19, x20, [sp,#16] + .cfi_restore x19 + .cfi_restore x20 ldp x29, x30, [sp],#32 + .cfi_adjust_cfa_offset -32 + .cfi_restore x29 + .cfi_restore x30 ret + .cfi_endproc +#ifndef __APPLE__ .size _NS_InvokeByIndex, . - _NS_InvokeByIndex - + .section .note.GNU-stack, "", @progbits +#endif |