root / tests / lm32 / macros.inc @ d65f0831
History | View | Annotate | Download (960 Bytes)
1 | d65f0831 | Michael Walle | |
---|---|---|---|
2 | d65f0831 | Michael Walle | .macro test_name name |
3 | d65f0831 | Michael Walle | .data |
4 | d65f0831 | Michael Walle | tn_\name: |
5 | d65f0831 | Michael Walle | .asciz "\name" |
6 | d65f0831 | Michael Walle | .text |
7 | d65f0831 | Michael Walle | mvhi r13, hi(tn_\name) |
8 | d65f0831 | Michael Walle | ori r13, r13, lo(tn_\name) |
9 | d65f0831 | Michael Walle | sw (r12+8), r13 |
10 | d65f0831 | Michael Walle | .endm |
11 | d65f0831 | Michael Walle | |
12 | d65f0831 | Michael Walle | .macro load reg val |
13 | d65f0831 | Michael Walle | mvhi \reg, hi(\val) |
14 | d65f0831 | Michael Walle | ori \reg, \reg, lo(\val) |
15 | d65f0831 | Michael Walle | .endm |
16 | d65f0831 | Michael Walle | |
17 | d65f0831 | Michael Walle | .macro tc_pass |
18 | d65f0831 | Michael Walle | mvi r13, 0 |
19 | d65f0831 | Michael Walle | sw (r12+4), r13 |
20 | d65f0831 | Michael Walle | .endm |
21 | d65f0831 | Michael Walle | |
22 | d65f0831 | Michael Walle | .macro tc_fail |
23 | d65f0831 | Michael Walle | mvi r13, 1 |
24 | d65f0831 | Michael Walle | sw (r12+4), r13 |
25 | d65f0831 | Michael Walle | .endm |
26 | d65f0831 | Michael Walle | |
27 | d65f0831 | Michael Walle | .macro check_r3 val |
28 | d65f0831 | Michael Walle | mvhi r13, hi(\val) |
29 | d65f0831 | Michael Walle | ori r13, r13, lo(\val) |
30 | d65f0831 | Michael Walle | be r3, r13, 1f |
31 | d65f0831 | Michael Walle | tc_fail |
32 | d65f0831 | Michael Walle | bi 2f |
33 | d65f0831 | Michael Walle | 1: |
34 | d65f0831 | Michael Walle | tc_pass |
35 | d65f0831 | Michael Walle | 2: |
36 | d65f0831 | Michael Walle | .endm |
37 | d65f0831 | Michael Walle | |
38 | d65f0831 | Michael Walle | .macro check_mem adr val |
39 | d65f0831 | Michael Walle | mvhi r13, hi(\adr) |
40 | d65f0831 | Michael Walle | ori r13, r13, lo(\adr) |
41 | d65f0831 | Michael Walle | mvhi r14, hi(\val) |
42 | d65f0831 | Michael Walle | ori r14, r14, lo(\val) |
43 | d65f0831 | Michael Walle | lw r13, (r13+0) |
44 | d65f0831 | Michael Walle | be r13, r14, 1f |
45 | d65f0831 | Michael Walle | tc_fail |
46 | d65f0831 | Michael Walle | bi 2f |
47 | d65f0831 | Michael Walle | 1: |
48 | d65f0831 | Michael Walle | tc_pass |
49 | d65f0831 | Michael Walle | 2: |
50 | d65f0831 | Michael Walle | .endm |
51 | d65f0831 | Michael Walle | |
52 | d65f0831 | Michael Walle | .macro check_excp excp |
53 | d65f0831 | Michael Walle | andi r13, r25, \excp |
54 | d65f0831 | Michael Walle | bne r13, r0, 1f |
55 | d65f0831 | Michael Walle | tc_fail |
56 | d65f0831 | Michael Walle | bi 2f |
57 | d65f0831 | Michael Walle | 1: |
58 | d65f0831 | Michael Walle | tc_pass |
59 | d65f0831 | Michael Walle | 2: |
60 | d65f0831 | Michael Walle | .endm |
61 | d65f0831 | Michael Walle | |
62 | d65f0831 | Michael Walle | .macro start |
63 | d65f0831 | Michael Walle | .global _main |
64 | d65f0831 | Michael Walle | .text |
65 | d65f0831 | Michael Walle | _main: |
66 | d65f0831 | Michael Walle | mvhi r12, hi(0xffff0000) # base address of test block |
67 | d65f0831 | Michael Walle | ori r12, r12, lo(0xffff0000) |
68 | d65f0831 | Michael Walle | .endm |
69 | d65f0831 | Michael Walle | |
70 | d65f0831 | Michael Walle | .macro end |
71 | d65f0831 | Michael Walle | sw (r12+0), r0 |
72 | d65f0831 | Michael Walle | 1: |
73 | d65f0831 | Michael Walle | bi 1b |
74 | d65f0831 | Michael Walle | .endm |
75 | d65f0831 | Michael Walle | |
76 | d65f0831 | Michael Walle | # base + |
77 | d65f0831 | Michael Walle | # 0 ctrl |
78 | d65f0831 | Michael Walle | # 4 pass/fail |
79 | d65f0831 | Michael Walle | # 8 ptr to test name |