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 <asm-offsets.h>
25#include <config.h>
26#include <timestamp.h>
27#include "version.h"
28#include <asm/cache.h>
29
30#ifndef CONFIG_IDENT_STRING
31#define CONFIG_IDENT_STRING ""
32#endif
33
34#define _START _start
35#define _FAULT _fault
36
37
38#define SAVE_ALL \
39 move.w
40 subl
41 moveml %d0-%d7/%a0-%a6,%sp@; \
42
43#define RESTORE_ALL \
44 moveml %sp@,%d0-%d7/%a0-%a6; \
45 addl
46 rte
47
48
49
50
51
52
53.text
54
55
56
57
58_vectors:
59
60.long 0x00000000
61
62.long _start - CONFIG_SYS_TEXT_BASE
63#else
64.long _START
65#endif
66
67.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
68.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
69.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
70.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
71.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
72.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
73.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
74.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
75
76.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
77.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
78.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
79.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
80.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
81.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
82.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
83.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
84
85.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
86.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
87.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
88.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
89.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
90.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
91.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
92.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
93
94.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
95.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
96.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
97.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
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
103#endif
104
105 .text
106
107
108
109 (defined(CONFIG_M5282) || defined(CONFIG_M5281))
110
111 .long 0x55AA55AA,0xAA55AA55
112 .long 0xFFFFFFFF
113 .long 0x00000000
114 .long 0x00000000
115 .long 0x00000000
116 #endif
117#endif
118 .globl _start
119_start:
120 nop
121 nop
122 move.w
123
124
125
126 move.l
127 movec %d0, %RAMBAR1
128#endif
129
130
131 move.l
132 move.c %d0, %MBAR
133
134
135#ifdef CONFIG_SYS_MBAR2
136 move.l
137 movec %d0,
138#endif
139
140 move.l
141 movec %d0, %RAMBAR0
142#endif
143
144
145
146 move.l
147 move.l %d0, 0x40000000
148
149
150 move.l
151 movec %d0, %RAMBAR1
152
153
154
155
156
157 move.l
158 move.l
159 move.l
160_copy_flash:
161 move.l (%a0)+, (%a2)+
162 cmp.l %a0, %a1
163 bgt.s _copy_flash
164 jmp CONFIG_SYS_INIT_RAM_ADDR
165
166_flashbar_setup:
167
168 move.l
169 movec %d0, %FLASHBAR
170 jmp _after_flashbar_copy.L
171_flashbar_setup_end:
172 nop
173_after_flashbar_copy:
174#else
175
176 move.l
177 movec %d0, %FLASHBAR
178#endif
179
180#endif
181#endif
182
183
184
185
186
187 move.l
188#else
189 move.l
190#endif
191 movec %d0, %VBR
192#endif
193
194#ifdef CONFIG_M5275
195
196 move.l
197 move.l %d0, 0x40000000
198
199
200
201 move.l
202 movec %d0, %RAMBAR1
203#endif
204
205
206 move.l
207 move.l
208 move.l
209 move.l %d0, (%a1)
210 move.l %d0, (%a2)
211
212
213 move.l
214 clr.l %sp@-
215
216 move.l
217
218 bsr cpu_init_f
219 bsr board_init_f
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236 .globl relocate_code
237relocate_code:
238 link.w %a6,
239 move.l 8(%a6), %sp
240
241 move.l 12(%a6), %d0
242 move.l 16(%a6), %a0
243
244 move.l
245 move.l
246 move.l %a0, %a3
247
2481:
249 move.l (%a1)+, (%a3)+
250 cmp.l %a1,%a2
251 bgt.s 1b
252
253
254
255
256
257 move.l %a0, %a1
258 add.l
259 jmp (%a1)
260
261in_ram:
262
263clear_bss:
264
265
266
267 move.l %a0, %a1
268 add.l
269 move.l %a0, %d1
270 add.l
2716:
272 clr.l (%a1)+
273 cmp.l %a1,%d1
274 bgt.s 6b
275
276
277
278
279 move.l %a0, %a1
280 add.l
281 move.l %a1,%a5
282
283 move.l %a0, %a2
284 add.l
285
2867:
287 move.l (%a1),%d1
288 sub.l
289 add.l %a0,%d1
290 move.l %d1,(%a1)+
291 cmp.l %a2, %a1
292 bne 7b
293
294
295 move.l %a0, %a1
296 add.l
297
298
299 move.l %a0,-(%sp)
300 move.l %d0,-(%sp)
301
302 defined(CONFIG_SYS_HALT_BEFOR_RAM_JUMP)
303 halt
304#endif
305 jsr (%a1)
306
307
308
309 .globl _fault
310_fault:
311 jmp _fault
312
313 .globl _exc_handler
314_exc_handler:
315 SAVE_ALL
316 movel %sp,%sp@-
317 bsr exc_handler
318 addql
319 RESTORE_ALL
320
321 .globl _int_handler
322_int_handler:
323 SAVE_ALL
324 movel %sp,%sp@-
325 bsr int_handler
326 addql
327 RESTORE_ALL
328
329
330
331 .globl version_string
332version_string:
333 .ascii U_BOOT_VERSION
334 .ascii " (", U_BOOT_DATE, " - ", U_BOOT_TIME, ")"
335 .ascii CONFIG_IDENT_STRING, "\0"
336 .align 4
337