summaryrefslogtreecommitdiff
path: root/arm
diff options
context:
space:
mode:
authornotaz2011-09-06 18:22:09 +0300
committernotaz2011-09-08 00:48:27 +0300
commit1e02ad6bbd8938b39e1761f20a8ab7392e3ee7b7 (patch)
treebac660f8fe4bba202359986f1a70419515bd6e5f /arm
parentfe1130691ea29cd751e975c8f09f48ac91e5216e (diff)
downloadpicogpsp-1e02ad6bbd8938b39e1761f20a8ab7392e3ee7b7.tar.gz
picogpsp-1e02ad6bbd8938b39e1761f20a8ab7392e3ee7b7.tar.bz2
picogpsp-1e02ad6bbd8938b39e1761f20a8ab7392e3ee7b7.zip
mask off arguments for write hadlers
newer gcc wants this
Diffstat (limited to 'arm')
-rw-r--r--arm/arm_stub.S11
1 files changed, 11 insertions, 0 deletions
diff --git a/arm/arm_stub.S b/arm/arm_stub.S
index cc38dd2..6a9fb6d 100644
--- a/arm/arm_stub.S
+++ b/arm/arm_stub.S
@@ -104,6 +104,15 @@
#define MODE_SUPERVISOR 3
+#ifdef __ARM_ARCH_7A__
+ #define extract_u16(rd, rs) \
+ uxth rd, rs
+#else
+ #define extract_u16(rd, rs) \
+ bic rd, rs, #0xff000000 ;\
+ bic rd, rd, #0x00ff0000
+#endif
+
@ Will load the register set from memory into the appropriate cached registers.
@ See arm_emit.h for listing explanation.
@@ -535,9 +544,11 @@ execute_arm_translate:
#define store_align_8() ;\
+ and r1, r1, #0xff ;\
#define store_align_16() ;\
bic r0, r0, #0x01 ;\
+ extract_u16(r1, r1) ;\
#define store_align_32() ;\
bic r0, r0, #0x03 ;\