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