diff options
Diffstat (limited to 'arm/arm_stub.S')
-rw-r--r-- | arm/arm_stub.S | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/arm/arm_stub.S b/arm/arm_stub.S index a7271fd..cc38dd2 100644 --- a/arm/arm_stub.S +++ b/arm/arm_stub.S @@ -171,13 +171,20 @@ #define restore_flags() ;\ msr cpsr_f, reg_flags ;\ +#ifdef __ARM_EABI__ + @ must align stack + #define call_c_saved_regs r2, r3, r12, lr +#else + #define call_c_saved_regs r3, r12, lr +#endif + @ Calls a C function - all caller save registers which are important to the @ dynarec and to returning from this function are saved. #define call_c_function(function) ;\ - stmdb sp!, { r3, r12, lr } ;\ + stmdb sp!, { call_c_saved_regs } ;\ bl function ;\ - ldmia sp!, { r3, r12, lr } ;\ + ldmia sp!, { call_c_saved_regs } ;\ @ Update the GBA hardware (video, sound, input, etc) |