summaryrefslogtreecommitdiff
path: root/arm
diff options
context:
space:
mode:
authornotaz2011-09-04 17:37:46 +0300
committernotaz2011-09-04 17:37:46 +0300
commit0a74ef66e11356f34c80568cca92b6cdc596248c (patch)
treefe7dcfbc204247f690d4aa4250a3726ef36748dd /arm
parentc21718e922f16bc7a459960b90e26634b8f2e33b (diff)
downloadpicogpsp-0a74ef66e11356f34c80568cca92b6cdc596248c.tar.gz
picogpsp-0a74ef66e11356f34c80568cca92b6cdc596248c.tar.bz2
picogpsp-0a74ef66e11356f34c80568cca92b6cdc596248c.zip
drc: fix eabi alignment
Diffstat (limited to 'arm')
-rw-r--r--arm/arm_stub.S11
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)