Mercurial > pub > dyncall > dyncall
diff dyncallback/dyncall_callback_arm32_arm_gas.S @ 406:351bb41d3bb1
- removed %-prefixes for register names from arm assembly files (was wrong to begin with, gas accepted them but the clang integrated assembler does not)
author | Tassilo Philipp |
---|---|
date | Sun, 03 Oct 2021 10:34:56 +0200 |
parents | f5577f6bf97a |
children | 7364f285cac8 |
line wrap: on
line diff
--- a/dyncallback/dyncall_callback_arm32_arm_gas.S Wed Apr 07 18:51:38 2021 +0200 +++ b/dyncallback/dyncall_callback_arm32_arm_gas.S Sun Oct 03 10:34:56 2021 +0200 @@ -6,7 +6,7 @@ Description: Callback Thunk - Implementation for ARM32 (ARM mode) License: - Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, + Copyright (c) 2007-2021 Daniel Adler <dadler@uni-goettingen.de>, Tassilo Philipp <tphilipp@potion-studios.com> Permission to use, copy, modify, and distribute this software for any @@ -47,37 +47,37 @@ dcCallbackThunkEntry: /* Prolog. This function never needs to spill inside its prolog, so just store the permanent registers. */ - stmdb %r13, {%r4-%r11, %r13, %r14} /* Permanent registers and stack pointer, etc... -> save area on stack (except counter). */ - mov %r11, %r13 /* Set frame pointer. */ - sub %r13, %r13, #40 /* Adjust stack pointer. */ + stmdb r13, {r4-r11, r13, r14} /* Permanent registers and stack pointer, etc... -> save area on stack (except counter). */ + mov r11, r13 /* Set frame pointer. */ + sub r13, r13, #40 /* Adjust stack pointer. */ /* Grab arguments. */ - mov %r4, #0 + mov r4, #0 #if defined(DC__ABI_ARM_HF) - stmdb %r13!, {%r4} /* Init freg_count and dreg_count to 0 */ - stmdb %r13!, {%r4} - fstmdbd %r13!, {d0-d7} /* Store all fp-registers in DCArgs' f[16] */ + stmdb r13!, {r4} /* Init freg_count and dreg_count to 0 */ + stmdb r13!, {r4} + fstmdbd r13!, {d0-d7} /* Store all fp-registers in DCArgs' f[16] */ #endif - stmdb %r13!, {%r0-%r4, %r11} /* Spill first 4 args to DCArgs, along with reg_count (init to 0) and (stack) pointer to remaining args. */ + stmdb r13!, {r0-r4, r11} /* Spill first 4 args to DCArgs, along with reg_count (init to 0) and (stack) pointer to remaining args. */ /* Prepare callback handler call. */ - mov %r0, %r12 /* Parameter 0 (r0) = DCCallback pointer (r12, pointer to thunk). */ - mov %r1, %r13 /* Parameter 1 (r1) = DCArgs pointer (r13, stack pointer). */ - sub %r13, %r13, #DCValue_size /* Make room for return value. */ - mov %r2, %r13 /* Parameter 2 (r2) = results pointer. */ - ldr %r3, [%r12, #CTX_userdata] /* Parameter 3 (r3) = userdata pointer. */ + mov r0, r12 /* Parameter 0 (r0) = DCCallback pointer (r12, pointer to thunk). */ + mov r1, r13 /* Parameter 1 (r1) = DCArgs pointer (r13, stack pointer). */ + sub r13, r13, #DCValue_size /* Make room for return value. */ + mov r2, r13 /* Parameter 2 (r2) = results pointer. */ + ldr r3, [r12, #CTX_userdata] /* Parameter 3 (r3) = userdata pointer. */ /* Call. */ - ldr %r4, [%r12, #CTX_handler] /* Load callback handler pointer into r4. */ - mov %r14, %r15 /* Branch return address(r15) -> link register (r14) -- r15 always points to address of current + 2 instructions (= Epilog code). */ - bx %r4 /* Call. */ + ldr r4, [r12, #CTX_handler] /* Load callback handler pointer into r4. */ + mov r14, r15 /* Branch return address(r15) -> link register (r14) -- r15 always points to address of current + 2 instructions (= Epilog code). */ + bx r4 /* Call. */ /* Return value. */ - ldmia %r13, {%r0, %r1} /* Load return value in r0 and r1. */ + ldmia r13, {r0, r1} /* Load return value in r0 and r1. */ #if defined(DC__ABI_ARM_HF) - fldmiad %r13, {%d0} /* Same for floating point return value (if any). */ + fldmiad r13, {d0} /* Same for floating point return value (if any). */ #endif /* Epilog. */ - ldmdb %r11, {%r4-%r11, %r13, %r15} /* Restore permanent registers (restore stack ptr and program counter).@@@db not needed since we rewrite r13? */ + ldmdb r11, {r4-r11, r13, r15} /* Restore permanent registers (restore stack ptr and program counter).@@@db not needed since we rewrite r13? */