1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27#include <asm-offsets.h>
28#include <config.h>
29#include "version.h"
30#include <asm/cache.h>
31
32#ifndef CONFIG_IDENT_STRING
33#define CONFIG_IDENT_STRING ""
34#endif
35
36#define _START _start
37#define _FAULT _fault
38
39#define SAVE_ALL \
40 move.w
41 subl
42 moveml %d0-%d7/%a0-%a6,%sp@;
43
44#define RESTORE_ALL \
45 moveml %sp@,%d0-%d7/%a0-%a6; \
46 addl
47 rte;
48
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#endif
127
128 .text
129
130 .globl _start
131_start:
132 nop
133 nop
134 move.w
135
136
137
138 move.l
139 movec %d0, %VBR
140#endif
141
142 move.l
143 movec %d0, %RAMBAR1
144
145
146 move.l
147 movec %d0, %CACR
148 move.l
149 movec %d0, %ACR0
150 movec %d0, %ACR1
151
152#ifdef CONFIG_MCF5301x
153 move.l
154 move.w (%a0), %d0
155 and.l %d0, 0xEFFF
156
157 move.w %d0, (%a0)
158#endif
159
160
161 move.l
162 move.l
163 move.l
164 move.l %d0, (%a1)
165 move.l %d0, (%a2)
166
167
168
169 move.l
170 clr.l %sp@-
171
172 move.l
173
174 bsr cpu_init_f
175 bsr board_init_f
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192 .globl relocate_code
193relocate_code:
194 link.w %a6,
195 move.l 8(%a6), %sp
196
197 move.l 12(%a6), %d0
198 move.l 16(%a6), %a0
199
200 move.l
201 move.l
202 move.l %a0, %a3
203
204
2051:
206 move.l (%a1)+, (%a3)+
207 cmp.l %a1,%a2
208 bgt.s 1b
209
210
211
212
213
214 move.l %a0, %a1
215 add.l
216 jmp (%a1)
217
218in_ram:
219
220clear_bss:
221
222
223
224 move.l %a0, %a1
225 add.l
226 move.l %a0, %d1
227 add.l
2286:
229 clr.l (%a1)+
230 cmp.l %a1,%d1
231 bgt.s 6b
232
233
234
235
236 move.l %a0, %a1
237 add.l
238 move.l %a1,%a5
239
240 move.l %a0, %a2
241 add.l
242
2437:
244 move.l (%a1),%d1
245 sub.l
246 add.l %a0,%d1
247 move.l %d1,(%a1)+
248 cmp.l %a2, %a1
249 bne 7b
250
251
252 move.l %a0, %a1
253 add.l
254
255
256 move.l %a0,-(%sp)
257 move.l %d0,-(%sp)
258 jsr (%a1)
259
260
261
262 .globl _fault
263_fault:
264 bra _fault
265 .globl _exc_handler
266
267_exc_handler:
268 SAVE_ALL
269 movel %sp,%sp@-
270 bsr exc_handler
271 addql
272 RESTORE_ALL
273
274 .globl _int_handler
275_int_handler:
276 SAVE_ALL
277 movel %sp,%sp@-
278 bsr int_handler
279 addql
280 RESTORE_ALL
281
282
283 .globl version_string
284version_string:
285 .ascii U_BOOT_VERSION_STRING, "\0"
286 .align 4
287