--- /dev/null
+# r0-r5 are used as tmps, consider them call clobbered by these macros.
+
+ .macro START
+ .data
+failmsg:
+ .ascii "fail\n"
+passmsg:
+ .ascii "pass\n"
+ .text
+ .global _START
+_START:
+ .endm
+
+ .macro exit rc
+ movw $\rc,r2
+ movw $0x410,r0
+ excp 8
+ .endm
+
+ .macro pass
+ movw $1, r2
+ movd $passmsg,(r4,r3)
+ movw $5, r5
+ movw $0x404, r0
+ excp 8
+ exit 0
+ .endm
+
+ .macro fail
+ movw $1, r2
+ movd $failmsg,(r4,r3)
+ movw $5, r5
+ movw $0x404, r0
+ excp 8
+ exit 1
+ .endm
+
+# Other macros know this only clobbers r0.
+ .macro test_h_gr reg, val
+ movw $\val,r0
+ cmpw \reg, r0
+ beq test_gr
+ fail
+test_gr:
+ .endm
+
+ .macro test_h_grp regp, val
+ movd $\val,(r1,r0)
+ cmpd \regp,(r1,r0)
+ beq test_grp
+ fail
+test_grp:
+ .endm
+
+
+ .macro mvi_h_condbit val
+ movw $0, r0
+ movw $\val, r1
+ cmpw r0, r1
+ .endm
+
+ .macro test_h_condbit val
+ .if \val
+ br test_c1
+ fail
+test_c1:
+ .else
+ br test_c0
+ fail
+test_c0:
+ .endif
+ .endm