arm: Fix compilation error in m5 utility
authorAndreas Sandberg <andreas@sandberg.pp.se>
Tue, 14 May 2013 13:03:45 +0000 (15:03 +0200)
committerAndreas Sandberg <andreas@sandberg.pp.se>
Tue, 14 May 2013 13:03:45 +0000 (15:03 +0200)
Changeset 5ca6098b9560 accidentally broke the m5 utility. This
changeset adds the missing co-processor call used to trigger the
pseudo-op in ARM mode and fixes an alignment issue that caused some
pseudo-ops to leave thumb mode.

util/m5/m5op_arm.S

index 83bef6a84309b4f5d4e17665577c05012835ba31..115c7a017d109430505c4a437e0847234d755875 100644 (file)
@@ -52,6 +52,7 @@
 .text
 
 .macro simple_op name, func, subfunc
+        .align 2
         .globl \name
 \name:
         /* First, try to trap into m5 using the m5-kvm hypercall
          * if it is executed in the normal m5 environment.
          */
         push {lr}
-        ldr lr, =1f
+#ifdef __thumb__
+        adr lr, 1f+1
+#else
+        adr lr, 1f
+#endif
         ldr ip, =((((\func) & 0xFF) << 8) | ((\subfunc) & 0xFF))
         bxj lr
         pop {pc}
@@ -70,8 +75,7 @@
         .short 0xEE00 | \func
         .short 0x0110 | (\subfunc << 12)
 #else
-#define INST(op, ra, rb, func) \
-        .long (0xEE000110 | (\func << 16) | (\subfunc << 12)
+        .long (0xEE000110 | (\func << 16) | (\subfunc << 12))
 #endif
         pop {pc}
 .endm