aboutsummaryrefslogtreecommitdiff
path: root/sim/testsuite/sim/arm/misaligned2.ms
diff options
context:
space:
mode:
Diffstat (limited to 'sim/testsuite/sim/arm/misaligned2.ms')
-rw-r--r--sim/testsuite/sim/arm/misaligned2.ms60
1 files changed, 60 insertions, 0 deletions
diff --git a/sim/testsuite/sim/arm/misaligned2.ms b/sim/testsuite/sim/arm/misaligned2.ms
new file mode 100644
index 00000000000..3a03326cc20
--- /dev/null
+++ b/sim/testsuite/sim/arm/misaligned2.ms
@@ -0,0 +1,60 @@
+# Test LDR instructions with offsets misaligned by 2 bytes.
+# mach(): all
+
+ .macro invalid
+# This is "undefined" but it's not properly decoded yet.
+ .word 0x07ffffff
+# This is stc which isn't recognized yet.
+ stc 0,cr0,[r0]
+ .endm
+
+ .global _start
+_start:
+# Run some simple insns to confirm the engine is at least working.
+ nop
+
+# Skip over output text.
+ bl do_test
+
+pass:
+ .asciz "pass\n"
+ .p2align 2
+
+do_test:
+ mov r4, r14
+ bl continue
+word1:
+ .word 0x5555
+continue:
+ ldr r6, [r14, #2]
+ ldr r7, word2
+ cmp r6, r7
+ # Failed.
+ bne done
+
+output_next:
+# Output a character (in arm mode).
+ mov r0,#3
+ mov r1,r4
+ swi #0x123456
+
+# Load next character, see if done.
+ add r4,r4,#1
+ sub r3,r3,r3
+ ldrb r5,[r4,r3]
+ teq r5,#0
+ bne output_next
+
+done:
+ mov r0,#0x18
+ ldr r1,exit_code
+ swi #0x123456
+
+# If that fails, try to die with an invalid insn.
+ invalid
+
+exit_code:
+ .word 0x20026
+
+word2:
+ .word 0x55550000