1 1.1 christos # r0-r3 are used as tmps, consider them call clobbered by these macros. 2 1.1 christos 3 1.1 christos .macro start 4 1.1 christos .data 5 1.1 christos failmsg: 6 1.1 christos .ascii "fail\n" 7 1.1 christos passmsg: 8 1.1 christos .ascii "pass\n" 9 1.1 christos .text 10 1.1 christos .global _start 11 1.1 christos _start: 12 1.1 christos .endm 13 1.1 christos 14 1.1 christos .macro exit rc 15 1.1 christos ldi8 r1, \rc 16 1.1 christos ldi8 r0, #1 17 1.1 christos trap #0 18 1.1 christos .endm 19 1.1 christos 20 1.1 christos .macro pass 21 1.1 christos ldi8 r3, 5 22 1.1 christos ld24 r2, passmsg 23 1.1 christos ldi8 r1, 1 24 1.1 christos ldi8 r0, 5 25 1.1 christos trap #0 26 1.1 christos exit 0 27 1.1 christos .endm 28 1.1 christos 29 1.1 christos .macro fail 30 1.1 christos ldi8 r3, 5 31 1.1 christos ld24 r2, failmsg 32 1.1 christos ldi8 r1, 1 33 1.1 christos ldi8 r0, 5 34 1.1 christos trap #0 35 1.1 christos exit 1 36 1.1 christos .endm 37 1.1 christos 38 1.1 christos .macro mvi_h_gr reg, val 39 1.1 christos .if (\val >= -128) && (\val <= 127) 40 1.1 christos ldi8 \reg, \val 41 1.1 christos .else 42 1.1 christos seth \reg, high(\val) 43 1.1 christos or3 \reg, \reg, low(\val) 44 1.1 christos .endif 45 1.1 christos .endm 46 1.1 christos 47 1.1 christos .macro mvaddr_h_gr reg, addr 48 1.1 christos seth \reg, high(\addr) 49 1.1 christos or3 \reg, \reg, low(\addr) 50 1.1 christos .endm 51 1.1 christos 52 1.1 christos # Other macros know this only clobbers r0. 53 1.1 christos .macro test_h_gr reg, val 54 1.1 christos mvaddr_h_gr r0, \val 55 1.1 christos beq \reg, r0, test_gr\@ 56 1.1 christos fail 57 1.1 christos test_gr\@: 58 1.1 christos .endm 59 1.1 christos 60 1.1 christos .macro mvi_h_condbit val 61 1.1 christos ldi8 r0, 0 62 1.1 christos ldi8 r1, 1 63 1.1 christos .if \val 64 1.1 christos cmp r0, r1 65 1.1 christos .else 66 1.1 christos cmp r1, r0 67 1.1 christos .endif 68 1.1 christos .endm 69 1.1 christos 70 1.1 christos .macro test_h_condbit val 71 1.1 christos .if \val 72 1.1 christos bc test_c1\@ 73 1.1 christos fail 74 1.1 christos test_c1\@: 75 1.1 christos .else 76 1.1 christos bnc test_c0\@ 77 1.1 christos fail 78 1.1 christos test_c0\@: 79 1.1 christos .endif 80 1.1 christos .endm 81 1.1 christos 82 1.1 christos .macro mvi_h_accum0 hi, lo 83 1.1 christos mvi_h_gr r0, \hi 84 1.1 christos mvtachi r0 85 1.1 christos mvi_h_gr r0, \lo 86 1.1 christos mvtaclo r0 87 1.1 christos .endm 88 1.1 christos 89 1.1 christos .macro test_h_accum0 hi, lo 90 1.1 christos mvfachi r1 91 1.1 christos test_h_gr r1, \hi 92 1.1 christos mvfaclo r1 93 1.1 christos test_h_gr r1, \lo 94 1.1 christos .endm 95 1.1 christos 96