summaryrefslogtreecommitdiff
path: root/sim/testsuite/sim/arm/movw-movt.ms
diff options
context:
space:
mode:
Diffstat (limited to 'sim/testsuite/sim/arm/movw-movt.ms')
-rw-r--r--sim/testsuite/sim/arm/movw-movt.ms53
1 files changed, 53 insertions, 0 deletions
diff --git a/sim/testsuite/sim/arm/movw-movt.ms b/sim/testsuite/sim/arm/movw-movt.ms
new file mode 100644
index 00000000000..1be815dc45f
--- /dev/null
+++ b/sim/testsuite/sim/arm/movw-movt.ms
@@ -0,0 +1,53 @@
+# output(): Hello, world.\n
+# mach(): all
+
+# This is a test for movw & movt instructions.
+# It emits hello world if movw & movt works appropriately.
+
+ .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 skip_output
+
+hello_text:
+ .asciz "Hello, world.\n"
+
+ .p2align 2
+skip_output:
+ movw r4, #:lower16:hello_text
+ movt r4, #:upper16:hello_text
+
+output_next:
+# Output a character
+ 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