Fix arm asm syntax.

main
theraven 14 years ago
parent 36bba25348
commit 62269b017d

@ -13,12 +13,22 @@
# argument (the first block argument) and the _cmd parameter excised # argument (the first block argument) and the _cmd parameter excised
.file "block_trampolines.S" .file "block_trampolines.S"
#if __arm__
.syntax unified
.globl __objc_block_trampoline_sret
.type __objc_block_trampoline_sret, %function
.globl __objc_block_trampoline_end_sret
.globl __objc_block_trampoline
.type __objc_block_trampoline, %function
.globl __objc_block_trampoline_end
#else
.globl __objc_block_trampoline_sret .globl __objc_block_trampoline_sret
.type __objc_block_trampoline_sret, @function .type __objc_block_trampoline_sret, @function
.globl __objc_block_trampoline_end_sret .globl __objc_block_trampoline_end_sret
.globl __objc_block_trampoline .globl __objc_block_trampoline
.type __objc_block_trampoline, @function .type __objc_block_trampoline, @function
.globl __objc_block_trampoline_end .globl __objc_block_trampoline_end
#endif
#if __x86_64 #if __x86_64
__objc_block_trampoline: __objc_block_trampoline:
mov -15(%rip), %rsi # Load the block pointer into the second argument mov -15(%rip), %rsi # Load the block pointer into the second argument
@ -53,14 +63,14 @@ next_line2:
__objc_block_trampoline_end_sret: __objc_block_trampoline_end_sret:
#elif __arm__ #elif __arm__
__objc_block_trampoline: __objc_block_trampoline:
mov r1, r0 # Move self over _cmd mov r1, r0 // Move self over _cmd
ldr r0, [pc, #-16] # Load the block pointer over self ldr r0, [pc, #-16] // Load the block pointer over self
ldr pc, [pc, #-24] # Jump to the block function ldr pc, [pc, #-24] // Jump to the block function
__objc_block_trampoline_end: __objc_block_trampoline_end:
__objc_block_trampoline_sret: __objc_block_trampoline_sret:
mov r2, r1 # Move self over _cmd mov r2, r1 // Move self over _cmd
ldr r1, [pc, #-16] # Load the block pointer over self ldr r1, [pc, #-16] // Load the block pointer over self
ldr pc, [pc, #-24] # Jump to the block function ldr pc, [pc, #-24] // Jump to the block function
__objc_block_trampoline_end_sret: __objc_block_trampoline_end_sret:
#else #else
#warning imp_implementationWithBlock() not implemented for your architecture #warning imp_implementationWithBlock() not implemented for your architecture

Loading…
Cancel
Save