# 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