comparison dyncallback/dyncall_callback_arm32_arm_gas.S @ 407:7364f285cac8

- use UAL syntax for some arm instructions for armhf targets, as clang's integrated as disallows pre-UAL syntax
author Tassilo Philipp
date Sun, 03 Oct 2021 10:41:46 +0200
parents 351bb41d3bb1
children
comparison
equal deleted inserted replaced
406:351bb41d3bb1 407:7364f285cac8
54 /* Grab arguments. */ 54 /* Grab arguments. */
55 mov r4, #0 55 mov r4, #0
56 #if defined(DC__ABI_ARM_HF) 56 #if defined(DC__ABI_ARM_HF)
57 stmdb r13!, {r4} /* Init freg_count and dreg_count to 0 */ 57 stmdb r13!, {r4} /* Init freg_count and dreg_count to 0 */
58 stmdb r13!, {r4} 58 stmdb r13!, {r4}
59 fstmdbd r13!, {d0-d7} /* Store all fp-registers in DCArgs' f[16] */ 59 vstmdb r13!, {d0-d7} /* Store all fp-registers in DCArgs' f[16] */
60 #endif 60 #endif
61 stmdb r13!, {r0-r4, r11} /* Spill first 4 args to DCArgs, along with reg_count (init to 0) and (stack) pointer to remaining args. */ 61 stmdb r13!, {r0-r4, r11} /* Spill first 4 args to DCArgs, along with reg_count (init to 0) and (stack) pointer to remaining args. */
62 62
63 /* Prepare callback handler call. */ 63 /* Prepare callback handler call. */
64 mov r0, r12 /* Parameter 0 (r0) = DCCallback pointer (r12, pointer to thunk). */ 64 mov r0, r12 /* Parameter 0 (r0) = DCCallback pointer (r12, pointer to thunk). */
73 bx r4 /* Call. */ 73 bx r4 /* Call. */
74 74
75 /* Return value. */ 75 /* Return value. */
76 ldmia r13, {r0, r1} /* Load return value in r0 and r1. */ 76 ldmia r13, {r0, r1} /* Load return value in r0 and r1. */
77 #if defined(DC__ABI_ARM_HF) 77 #if defined(DC__ABI_ARM_HF)
78 fldmiad r13, {d0} /* Same for floating point return value (if any). */ 78 vldmia r13, {d0} /* Same for floating point return value (if any). */
79 #endif 79 #endif
80 80
81 /* Epilog. */ 81 /* Epilog. */
82 ldmdb r11, {r4-r11, r13, r15} /* Restore permanent registers (restore stack ptr and program counter).@@@db not needed since we rewrite r13? */ 82 ldmdb r11, {r4-r11, r13, r15} /* Restore permanent registers (restore stack ptr and program counter).@@@db not needed since we rewrite r13? */
83 83