Commit | Line | Data |
---|---|---|
c906108c SS |
1 | .macro start |
2 | .text | |
3 | .align 2 | |
4 | .globl _start | |
5 | _start: | |
6 | ldi r0, 0 | |
7 | .endm | |
8 | ||
9 | ||
10 | .macro exit47 | |
11 | ldi r4, 1 | |
12 | ldi r0, 47 | |
13 | trap 15 | |
14 | .endm | |
15 | ||
16 | ||
17 | .macro exit0 | |
18 | ldi r4, 1 | |
19 | ldi r0, 0 | |
20 | trap 15 | |
21 | .endm | |
22 | ||
23 | ||
24 | .macro load reg val | |
25 | ldi \reg, #\val | |
26 | .endm | |
27 | ||
28 | ||
29 | .macro load2w reg hi lo | |
30 | ld2w \reg, @(1f,r0) | |
31 | .data | |
32 | .align 2 | |
33 | 1: .short \hi | |
34 | .short \lo | |
35 | .text | |
36 | .endm | |
37 | ||
38 | ||
39 | .macro check exit reg val | |
40 | cmpeqi \reg, #\val | |
41 | brf0t 1f | |
42 | 0: ldi r4, 1 | |
43 | ldi r0, \exit | |
44 | trap 15 | |
45 | 1: | |
46 | .endm | |
47 | ||
48 | ||
49 | .macro check2w2 exit reg hi lo | |
50 | st2w \reg, @(1f,r0) | |
51 | ld r2, @(1f, r0) | |
52 | cmpeqi r2, #\hi | |
53 | brf0f 0f | |
54 | ld r2, @(1f + 2, r0) | |
55 | cmpeqi r2, #\lo | |
56 | brf0f 0f | |
57 | bra 2f | |
58 | 0: ldi r4, 1 | |
59 | ldi r0, \exit | |
60 | trap 15 | |
61 | .data | |
62 | .align 2 | |
63 | 1: .long 0 | |
64 | .text | |
65 | 2: | |
66 | .endm | |
67 | ||
68 | ||
69 | .macro loadacc2 acc guard hi lo | |
70 | ldi r2, #\lo | |
71 | mvtaclo r2, \acc | |
72 | ldi r2, #\hi | |
73 | mvtachi r2, \acc | |
74 | ldi r2, #\guard | |
75 | mvtacg r2, \acc | |
76 | .endm | |
77 | ||
78 | ||
79 | .macro checkacc2 exit acc guard hi lo | |
80 | ldi r2, #\guard | |
81 | mvfacg r3, \acc | |
82 | cmpeq r2, r3 | |
83 | brf0f 0f | |
84 | ldi r2, #\hi | |
85 | mvfachi r3, \acc | |
86 | cmpeq r2, r3 | |
87 | brf0f 0f | |
88 | ldi r2, #\lo | |
89 | mvfaclo r3, \acc | |
90 | cmpeq r2, r3 | |
91 | brf0f 0f | |
92 | bra 4f | |
93 | 0: ldi r4, 1 | |
94 | ldi r0, \exit | |
95 | trap 15 | |
96 | 4: | |
97 | .endm | |
98 | ||
99 | ||
100 | .macro loadpsw2 val | |
101 | ldi r2, #\val | |
102 | mvtc r2, cr0 | |
103 | .endm | |
104 | ||
105 | ||
106 | .macro checkpsw2 exit val | |
107 | mvfc r2, cr0 | |
108 | cmpeqi r2, #\val | |
109 | brf0t 1f | |
110 | ldi r4, 1 | |
111 | ldi r0, \exit | |
112 | trap 15 | |
113 | 1: | |
114 | .endm | |
115 | ||
116 | ||
117 | .macro hello | |
118 | ;; 4:write (1, string, strlen (string)) | |
119 | ldi r4, 4 | |
120 | ldi r0, 1 | |
121 | ldi r1, 1f | |
122 | ldi r2, 2f-1f-1 | |
123 | trap 15 | |
124 | .section .rodata | |
125 | 1: .string "Hello World!\n" | |
126 | 2: .align 2 | |
127 | .text | |
128 | .endm | |
129 | ||
130 | ||
131 | PSW_SM = 0x8000 | |
132 | PSW_01 = 0x4000 | |
133 | PSW_EA = 0x2000 | |
134 | PSW_DB = 0x1000 | |
135 | PSW_DM = 0x0800 | |
136 | PSW_IE = 0x0400 | |
137 | PSW_RP = 0x0200 | |
138 | PSW_MD = 0x0100 | |
139 | PSW_FX = 0x0080 | |
140 | PSW_ST = 0x0040 | |
141 | PSW_10 = 0x0020 | |
142 | PSW_11 = 0x0010 | |
143 | PSW_F0 = 0x0008 | |
144 | PSW_F1 = 0x0004 | |
145 | PSW_14 = 0x0002 | |
146 | PSW_C = 0x0001 | |
147 | ||
148 | ||
149 | ;;; | |
150 | ||
151 | DMAP_MASK = 0x3fff | |
152 | DMAP_BASE = 0x8000 | |
153 | DMAP_REG = 0xff04 | |
154 | ||
155 | IMAP0_REG = 0xff00 | |
156 | IMAP1_REG = 0xff02 | |
157 | ||
158 | MAP_INSN = 0x1000 | |
159 | ||
160 | ;;; | |
161 | ||
162 | VEC_RI = 0x3fc00 | |
163 | VEC_BAE = 0x3fc04 | |
164 | VEC_RIE = 0x3fc08 | |
165 | VEC_AE = 0x3fc0c | |
166 | VEC_TRAP = 0x3fc10 | |
167 | VEC_DBT = 0x3ff50 | |
168 | VEC_SDBT = 0x3fff4 | |
169 | VEC_DBI = 0x3ff58 | |
170 | VEC_EI = 0x3ff5c |