blob: bf2d9f11922fa72f8d6267263c69587a6aaca19a [file] [log] [blame]
# Test LDR instructions with offsets misaligned by 3 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, #3]
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
.word 0xFFFFFFFF
word2:
.word 0x555500
.word 0xFFFFFFFF