summaryrefslogtreecommitdiff
path: root/xpcom/reflect/xptcall/md/unix/xptcinvoke_asm_aarch64.s
diff options
context:
space:
mode:
Diffstat (limited to 'xpcom/reflect/xptcall/md/unix/xptcinvoke_asm_aarch64.s')
-rw-r--r--xpcom/reflect/xptcall/md/unix/xptcinvoke_asm_aarch64.s35
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