1
2
3
4
5
6
7
8#include <asm-offsets.h>
9#include <config.h>
10#include "version.h"
11#include <asm/cache.h>
12
13#ifndef CONFIG_IDENT_STRING
14#define CONFIG_IDENT_STRING ""
15#endif
16
17#define _START _start
18#define _FAULT _fault
19
20#define SAVE_ALL \
21 move.w
22 subl
23 moveml %d0-%d7/%a0-%a6,%sp@;
24
25#define RESTORE_ALL \
26 moveml %sp@,%d0-%d7/%a0-%a6; \
27 addl
28 rte;
29
30.text
31
32
33
34
35_vectors:
36
37INITSP: .long 0x00000000
38INITPC: .long _START
39vector02: .long _FAULT
40vector03: .long _FAULT
41vector04: .long _FAULT
42vector05: .long _FAULT
43vector06: .long _FAULT
44vector07: .long _FAULT
45vector08: .long _FAULT
46vector09: .long _FAULT
47vector0A: .long _FAULT
48vector0B: .long _FAULT
49vector0C: .long _FAULT
50vector0D: .long _FAULT
51vector0E: .long _FAULT
52vector0F: .long _FAULT
53
54
55vector10_17:
56.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
57
58vector18: .long _FAULT
59vector19: .long _FAULT
60vector1A: .long _FAULT
61vector1B: .long _FAULT
62vector1C: .long _FAULT
63vector1D: .long _FAULT
64vector1E: .long _FAULT
65vector1F: .long _FAULT
66
67
68vector20_2F:
69.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
70.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
71
72
73vector30_3F:
74.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
75.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
76
77vector64_127:
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.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
85.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
86
87vector128_191:
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.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
94.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
95.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
96
97vector192_255:
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
107 .text
108
109 .globl _start
110_start:
111 nop
112 nop
113 move.w
114
115
116 move.l
117 movec %d0, %VBR
118
119 move.l
120 movec %d0, %RAMBAR0
121
122 move.l
123 movec %d0, %RAMBAR1
124
125 move.l
126 move.c %d0, %MBAR
127
128
129 move.l
130 movec %d0, %CACR
131 move.l
132 movec %d0, %ACR0
133 movec %d0, %ACR1
134 movec %d0, %ACR2
135 movec %d0, %ACR3
136
137
138 move.l
139 move.l
140 move.l
141 move.l %d0, (%a1)
142 move.l %d0, (%a2)
143
144
145
146 move.l
147 clr.l %sp@-
148
149 move.l
150
151 jbsr cpu_init_f
152 jbsr board_init_f
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169 .globl relocate_code
170relocate_code:
171 link.w %a6,
172 move.l 8(%a6), %sp
173
174 move.l 12(%a6), %d0
175 move.l 16(%a6), %a0
176
177 move.l
178 move.l
179 move.l %a0, %a3
180
181
1821:
183 move.l (%a1)+, (%a3)+
184 cmp.l %a1,%a2
185 bgt.s 1b
186
187
188
189
190
191 move.l %a0, %a1
192 add.l
193 jmp (%a1)
194
195in_ram:
196
197clear_bss:
198
199
200
201 move.l %a0, %a1
202 add.l
203 move.l %a0, %d1
204 add.l
2056:
206 clr.l (%a1)+
207 cmp.l %a1,%d1
208 bgt.s 6b
209
210
211
212
213 move.l %a0, %a1
214 add.l
215 move.l %a1,%a5
216
217 move.l %a0, %a2
218 add.l
219
2207:
221 move.l (%a1),%d1
222 sub.l
223 add.l %a0,%d1
224 move.l %d1,(%a1)+
225 cmp.l %a2, %a1
226 bne 7b
227
228
229 move.l %a0, %a1
230 add.l
231
232
233 move.l %a0,-(%sp)
234 move.l %d0,-(%sp)
235 jsr (%a1)
236
237
238
239 .globl _fault
240_fault:
241 bra _fault
242 .globl _exc_handler
243
244_exc_handler:
245 SAVE_ALL
246 movel %sp,%sp@-
247 bsr exc_handler
248 addql
249 RESTORE_ALL
250
251 .globl _int_handler
252_int_handler:
253 SAVE_ALL
254 movel %sp,%sp@-
255 bsr int_handler
256 addql
257 RESTORE_ALL
258
259
260
261 .globl version_string
262version_string:
263 .ascii U_BOOT_VERSION_STRING, "\0"
264 .align 4
265