1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24#include <config.h>
25#include <timestamp.h>
26#include "version.h"
27
28#ifndef CONFIG_IDENT_STRING
29#define CONFIG_IDENT_STRING ""
30#endif
31
32
33#define ICACHE_STATUS (CONFIG_SYS_INIT_RAM_ADDR+CONFIG_SYS_INIT_RAM_END- 4)
34#define DCACHE_STATUS (CONFIG_SYS_INIT_RAM_ADDR+CONFIG_SYS_INIT_RAM_END- 8)
35#define CACR_STATUS (CONFIG_SYS_INIT_RAM_ADDR+CONFIG_SYS_INIT_RAM_END-12)
36
37#define _START _start
38#define _FAULT _fault
39
40#define SAVE_ALL \
41 move.w
42 subl
43 moveml %d0-%d7/%a0-%a6,%sp@;
44
45#define RESTORE_ALL \
46 moveml %sp@,%d0-%d7/%a0-%a6; \
47 addl
48 rte;
49
50.text
51
52
53
54
55_vectors:
56
57INITSP: .long 0x00000000
58INITPC: .long _START
59vector02: .long _FAULT
60vector03: .long _FAULT
61vector04: .long _FAULT
62vector05: .long _FAULT
63vector06: .long _FAULT
64vector07: .long _FAULT
65vector08: .long _FAULT
66vector09: .long _FAULT
67vector0A: .long _FAULT
68vector0B: .long _FAULT
69vector0C: .long _FAULT
70vector0D: .long _FAULT
71vector0E: .long _FAULT
72vector0F: .long _FAULT
73
74
75vector10_17:
76.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
77
78vector18: .long _FAULT
79vector19: .long _FAULT
80vector1A: .long _FAULT
81vector1B: .long _FAULT
82vector1C: .long _FAULT
83vector1D: .long _FAULT
84vector1E: .long _FAULT
85vector1F: .long _FAULT
86
87
88vector20_2F:
89.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
90.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
91
92
93vector30_3F:
94.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
95.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
96
97vector64_127:
98.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
99.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
100.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
101.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
102.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
103.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
104.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
105.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
106
107vector128_191:
108.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
109.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
110.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
111.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
112.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
113.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
114.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
115.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
116
117vector192_255:
118.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
119.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
120.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
121.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
122.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
123.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
124.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
125.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
126
127 .text
128
129 .globl _start
130_start:
131 nop
132 nop
133 move.w
134
135
136 move.l
137 movec %d0, %VBR
138
139 move.l
140 movec %d0, %RAMBAR0
141
142 move.l
143 movec %d0, %RAMBAR1
144
145 move.l
146 move.c %d0, %MBAR
147
148
149 move.l
150 movec %d0, %CACR
151 move.l
152 movec %d0, %ACR0
153 movec %d0, %ACR1
154 movec %d0, %ACR2
155 movec %d0, %ACR3
156
157
158 move.l
159 move.l
160 move.l
161 move.l
162 move.l %d0, (%a1)
163 move.l %d0, (%a2)
164 move.l %d0, (%a3)
165
166
167
168 move.l
169 clr.l %sp@-
170
171 move.l
172
173 bsr cpu_init_f
174 bsr board_init_f
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191 .globl relocate_code
192relocate_code:
193 link.w %a6,
194 move.l 8(%a6), %sp
195
196 move.l 12(%a6), %d0
197 move.l 16(%a6), %a0
198
199 move.l
200 move.l
201 move.l %a0, %a3
202
203
2041:
205 move.l (%a1)+, (%a3)+
206 cmp.l %a1,%a2
207 bgt.s 1b
208
209
210
211
212
213 move.l %a0, %a1
214 add.l
215 jmp (%a1)
216
217in_ram:
218
219clear_bss:
220
221
222
223 move.l %a0, %a1
224 add.l
225 move.l %a0, %d1
226 add.l
2276:
228 clr.l (%a1)+
229 cmp.l %a1,%d1
230 bgt.s 6b
231
232
233
234
235 move.l %a0, %a1
236 add.l
237 move.l %a1,%a5
238
239 move.l %a0, %a2
240 add.l
241
2427:
243 move.l (%a1),%d1
244 sub.l
245 add.l %a0,%d1
246 move.l %d1,(%a1)+
247 cmp.l %a2, %a1
248 bne 7b
249
250
251 move.l %a0, %a1
252 add.l
253
254
255 move.l %a0,-(%sp)
256 move.l %d0,-(%sp)
257 jsr (%a1)
258
259
260
261 .globl _fault
262_fault:
263 bra _fault
264 .globl _exc_handler
265
266_exc_handler:
267 SAVE_ALL
268 movel %sp,%sp@-
269 bsr exc_handler
270 addql
271 RESTORE_ALL
272
273 .globl _int_handler
274_int_handler:
275 SAVE_ALL
276 movel %sp,%sp@-
277 bsr int_handler
278 addql
279 RESTORE_ALL
280
281
282
283 .globl icache_enable
284icache_enable:
285 move.l
286 movec %d0, %ACR2
287
288 move.l
289 movec %d0, %CACR
290 nop
291
292 move.l
293 moveq
294 move.l %d0, (%a1)
295 rts
296
297 .globl icache_disable
298icache_disable:
299 move.l
300 movec %d0, %CACR
301 clr.l %d0
302 movec %d0, %ACR2
303 movec %d0, %ACR3
304
305 move.l
306 moveq
307 move.l %d0, (%a1)
308 rts
309
310 .globl icache_invalid
311icache_invalid:
312 move.l
313 movec %d0, %CACR
314 rts
315
316 .globl icache_status
317icache_status:
318 move.l
319 move.l (%a1), %d0
320 rts
321
322 .globl dcache_enable
323dcache_enable:
324 bsr icache_disable
325
326 move.l
327 movec %d0, %ACR0
328
329 move.l
330 movec %d0, %CACR
331
332 move.l
333 moveq
334 move.l %d0, (%a1)
335 rts
336
337 .globl dcache_disable
338dcache_disable:
339 move.l
340 movec %d0, %CACR
341 clr.l %d0
342 movec %d0, %ACR0
343 movec %d0, %ACR1
344
345 move.l
346 moveq
347 move.l %d0, (%a1)
348 rts
349
350 .globl dcache_status
351dcache_status:
352 move.l
353 move.l (%a1), %d0
354 rts
355
356
357
358 .globl version_string
359version_string:
360 .ascii U_BOOT_VERSION
361 .ascii " (", U_BOOT_DATE, " - ", U_BOOT_TIME, ")"
362 .ascii CONFIG_IDENT_STRING, "\0"
363 .align 4
364