Mercurial > pub > dyncall > dyncall
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 |