testutils.inc revision 1.1 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