1 | /* |
---|
2 | * $Id$ |
---|
3 | * |
---|
4 | * Re-written the gen68302 start-up code. |
---|
5 | * |
---|
6 | * Uses gas syntax only, removed the OAR asm.h. |
---|
7 | * |
---|
8 | * Supplies a complete vector table in ROM. |
---|
9 | * |
---|
10 | * Manages all vectors with seperate handlers to trap unhandled |
---|
11 | * execptions. |
---|
12 | * |
---|
13 | * Uses the target specific header file to get the runtime |
---|
14 | * configuration |
---|
15 | * |
---|
16 | * COPYRIGHT (c) 1996 |
---|
17 | * Objective Design Systems Pty Ltd (ODS) |
---|
18 | * |
---|
19 | * COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994. |
---|
20 | * On-Line Applications Research Corporation (OAR). |
---|
21 | * |
---|
22 | */ |
---|
23 | |
---|
24 | #define STACK_AT_RESET 0x0 |
---|
25 | |
---|
26 | | |
---|
27 | | Boot boot code in a special section, ld postions |
---|
28 | | |
---|
29 | | Initial stack pointer is in the dual ported RAM |
---|
30 | | |
---|
31 | .sect .text |
---|
32 | |
---|
33 | .global _start | program entry |
---|
34 | .global M68Kvec | Vector Table |
---|
35 | |
---|
36 | _start: | standard name for program entry |
---|
37 | M68Kvec: | standard location for vectors |
---|
38 | |
---|
39 | | |
---|
40 | | Make relative, can have the code positioned any where |
---|
41 | | |
---|
42 | |
---|
43 | V___ISSP: .long STACK_AT_RESET |
---|
44 | V____IPC: .long start - V___ISSP |
---|
45 | |
---|
46 | | |
---|
47 | | Create the rest of the vector table to point to the unhandled expection |
---|
48 | | handler |
---|
49 | | |
---|
50 | | Lots of macros, how-ever it creates a simple ROM vector table |
---|
51 | | |
---|
52 | |
---|
53 | #if defined(__mcpu32__) |
---|
54 | .space 1016 | reserve space for rest of vectors |
---|
55 | #else |
---|
56 | #define MAKE_EXCEPTION_VECTOR(n) V___##n: .long (_CPU_ISR_jump_table + (n * 10)) |
---|
57 | |
---|
58 | MAKE_EXCEPTION_VECTOR(2) |
---|
59 | MAKE_EXCEPTION_VECTOR(3) |
---|
60 | MAKE_EXCEPTION_VECTOR(4) |
---|
61 | MAKE_EXCEPTION_VECTOR(5) |
---|
62 | MAKE_EXCEPTION_VECTOR(6) |
---|
63 | MAKE_EXCEPTION_VECTOR(7) |
---|
64 | MAKE_EXCEPTION_VECTOR(8) |
---|
65 | MAKE_EXCEPTION_VECTOR(9) |
---|
66 | |
---|
67 | MAKE_EXCEPTION_VECTOR(10) |
---|
68 | MAKE_EXCEPTION_VECTOR(11) |
---|
69 | MAKE_EXCEPTION_VECTOR(12) |
---|
70 | MAKE_EXCEPTION_VECTOR(13) |
---|
71 | MAKE_EXCEPTION_VECTOR(14) |
---|
72 | MAKE_EXCEPTION_VECTOR(15) |
---|
73 | MAKE_EXCEPTION_VECTOR(16) |
---|
74 | MAKE_EXCEPTION_VECTOR(17) |
---|
75 | MAKE_EXCEPTION_VECTOR(18) |
---|
76 | MAKE_EXCEPTION_VECTOR(19) |
---|
77 | |
---|
78 | MAKE_EXCEPTION_VECTOR(20) |
---|
79 | MAKE_EXCEPTION_VECTOR(21) |
---|
80 | MAKE_EXCEPTION_VECTOR(22) |
---|
81 | MAKE_EXCEPTION_VECTOR(23) |
---|
82 | MAKE_EXCEPTION_VECTOR(24) |
---|
83 | MAKE_EXCEPTION_VECTOR(25) |
---|
84 | MAKE_EXCEPTION_VECTOR(26) |
---|
85 | MAKE_EXCEPTION_VECTOR(27) |
---|
86 | MAKE_EXCEPTION_VECTOR(28) |
---|
87 | MAKE_EXCEPTION_VECTOR(29) |
---|
88 | |
---|
89 | MAKE_EXCEPTION_VECTOR(30) |
---|
90 | MAKE_EXCEPTION_VECTOR(31) |
---|
91 | MAKE_EXCEPTION_VECTOR(32) |
---|
92 | MAKE_EXCEPTION_VECTOR(33) |
---|
93 | MAKE_EXCEPTION_VECTOR(34) |
---|
94 | MAKE_EXCEPTION_VECTOR(35) |
---|
95 | MAKE_EXCEPTION_VECTOR(36) |
---|
96 | MAKE_EXCEPTION_VECTOR(37) |
---|
97 | MAKE_EXCEPTION_VECTOR(38) |
---|
98 | MAKE_EXCEPTION_VECTOR(39) |
---|
99 | |
---|
100 | MAKE_EXCEPTION_VECTOR(40) |
---|
101 | MAKE_EXCEPTION_VECTOR(41) |
---|
102 | MAKE_EXCEPTION_VECTOR(42) |
---|
103 | MAKE_EXCEPTION_VECTOR(43) |
---|
104 | MAKE_EXCEPTION_VECTOR(44) |
---|
105 | MAKE_EXCEPTION_VECTOR(45) |
---|
106 | MAKE_EXCEPTION_VECTOR(46) |
---|
107 | MAKE_EXCEPTION_VECTOR(47) |
---|
108 | MAKE_EXCEPTION_VECTOR(48) |
---|
109 | MAKE_EXCEPTION_VECTOR(49) |
---|
110 | |
---|
111 | MAKE_EXCEPTION_VECTOR(50) |
---|
112 | MAKE_EXCEPTION_VECTOR(51) |
---|
113 | MAKE_EXCEPTION_VECTOR(52) |
---|
114 | MAKE_EXCEPTION_VECTOR(53) |
---|
115 | MAKE_EXCEPTION_VECTOR(54) |
---|
116 | MAKE_EXCEPTION_VECTOR(55) |
---|
117 | MAKE_EXCEPTION_VECTOR(56) |
---|
118 | MAKE_EXCEPTION_VECTOR(57) |
---|
119 | MAKE_EXCEPTION_VECTOR(58) |
---|
120 | MAKE_EXCEPTION_VECTOR(59) |
---|
121 | |
---|
122 | MAKE_EXCEPTION_VECTOR(60) |
---|
123 | MAKE_EXCEPTION_VECTOR(61) |
---|
124 | MAKE_EXCEPTION_VECTOR(62) |
---|
125 | MAKE_EXCEPTION_VECTOR(63) |
---|
126 | MAKE_EXCEPTION_VECTOR(64) |
---|
127 | MAKE_EXCEPTION_VECTOR(65) |
---|
128 | MAKE_EXCEPTION_VECTOR(66) |
---|
129 | MAKE_EXCEPTION_VECTOR(67) |
---|
130 | MAKE_EXCEPTION_VECTOR(68) |
---|
131 | MAKE_EXCEPTION_VECTOR(69) |
---|
132 | |
---|
133 | MAKE_EXCEPTION_VECTOR(70) |
---|
134 | MAKE_EXCEPTION_VECTOR(71) |
---|
135 | MAKE_EXCEPTION_VECTOR(72) |
---|
136 | MAKE_EXCEPTION_VECTOR(73) |
---|
137 | MAKE_EXCEPTION_VECTOR(74) |
---|
138 | MAKE_EXCEPTION_VECTOR(75) |
---|
139 | MAKE_EXCEPTION_VECTOR(76) |
---|
140 | MAKE_EXCEPTION_VECTOR(77) |
---|
141 | MAKE_EXCEPTION_VECTOR(78) |
---|
142 | MAKE_EXCEPTION_VECTOR(79) |
---|
143 | |
---|
144 | MAKE_EXCEPTION_VECTOR(80) |
---|
145 | MAKE_EXCEPTION_VECTOR(81) |
---|
146 | MAKE_EXCEPTION_VECTOR(82) |
---|
147 | MAKE_EXCEPTION_VECTOR(83) |
---|
148 | MAKE_EXCEPTION_VECTOR(84) |
---|
149 | MAKE_EXCEPTION_VECTOR(85) |
---|
150 | MAKE_EXCEPTION_VECTOR(86) |
---|
151 | MAKE_EXCEPTION_VECTOR(87) |
---|
152 | MAKE_EXCEPTION_VECTOR(88) |
---|
153 | MAKE_EXCEPTION_VECTOR(89) |
---|
154 | |
---|
155 | MAKE_EXCEPTION_VECTOR(90) |
---|
156 | MAKE_EXCEPTION_VECTOR(91) |
---|
157 | MAKE_EXCEPTION_VECTOR(92) |
---|
158 | MAKE_EXCEPTION_VECTOR(93) |
---|
159 | MAKE_EXCEPTION_VECTOR(94) |
---|
160 | MAKE_EXCEPTION_VECTOR(95) |
---|
161 | MAKE_EXCEPTION_VECTOR(96) |
---|
162 | MAKE_EXCEPTION_VECTOR(97) |
---|
163 | MAKE_EXCEPTION_VECTOR(98) |
---|
164 | MAKE_EXCEPTION_VECTOR(99) |
---|
165 | |
---|
166 | MAKE_EXCEPTION_VECTOR(100) |
---|
167 | MAKE_EXCEPTION_VECTOR(101) |
---|
168 | MAKE_EXCEPTION_VECTOR(102) |
---|
169 | MAKE_EXCEPTION_VECTOR(103) |
---|
170 | MAKE_EXCEPTION_VECTOR(104) |
---|
171 | MAKE_EXCEPTION_VECTOR(105) |
---|
172 | MAKE_EXCEPTION_VECTOR(106) |
---|
173 | MAKE_EXCEPTION_VECTOR(107) |
---|
174 | MAKE_EXCEPTION_VECTOR(108) |
---|
175 | MAKE_EXCEPTION_VECTOR(109) |
---|
176 | |
---|
177 | MAKE_EXCEPTION_VECTOR(110) |
---|
178 | MAKE_EXCEPTION_VECTOR(111) |
---|
179 | MAKE_EXCEPTION_VECTOR(112) |
---|
180 | MAKE_EXCEPTION_VECTOR(113) |
---|
181 | MAKE_EXCEPTION_VECTOR(114) |
---|
182 | MAKE_EXCEPTION_VECTOR(115) |
---|
183 | MAKE_EXCEPTION_VECTOR(116) |
---|
184 | MAKE_EXCEPTION_VECTOR(117) |
---|
185 | MAKE_EXCEPTION_VECTOR(118) |
---|
186 | MAKE_EXCEPTION_VECTOR(119) |
---|
187 | |
---|
188 | MAKE_EXCEPTION_VECTOR(120) |
---|
189 | MAKE_EXCEPTION_VECTOR(121) |
---|
190 | MAKE_EXCEPTION_VECTOR(122) |
---|
191 | MAKE_EXCEPTION_VECTOR(123) |
---|
192 | MAKE_EXCEPTION_VECTOR(124) |
---|
193 | MAKE_EXCEPTION_VECTOR(125) |
---|
194 | MAKE_EXCEPTION_VECTOR(126) |
---|
195 | MAKE_EXCEPTION_VECTOR(127) |
---|
196 | MAKE_EXCEPTION_VECTOR(128) |
---|
197 | MAKE_EXCEPTION_VECTOR(129) |
---|
198 | |
---|
199 | MAKE_EXCEPTION_VECTOR(130) |
---|
200 | MAKE_EXCEPTION_VECTOR(131) |
---|
201 | MAKE_EXCEPTION_VECTOR(132) |
---|
202 | MAKE_EXCEPTION_VECTOR(133) |
---|
203 | MAKE_EXCEPTION_VECTOR(134) |
---|
204 | MAKE_EXCEPTION_VECTOR(135) |
---|
205 | MAKE_EXCEPTION_VECTOR(136) |
---|
206 | MAKE_EXCEPTION_VECTOR(137) |
---|
207 | MAKE_EXCEPTION_VECTOR(138) |
---|
208 | MAKE_EXCEPTION_VECTOR(139) |
---|
209 | |
---|
210 | MAKE_EXCEPTION_VECTOR(140) |
---|
211 | MAKE_EXCEPTION_VECTOR(141) |
---|
212 | MAKE_EXCEPTION_VECTOR(142) |
---|
213 | MAKE_EXCEPTION_VECTOR(143) |
---|
214 | MAKE_EXCEPTION_VECTOR(144) |
---|
215 | MAKE_EXCEPTION_VECTOR(145) |
---|
216 | MAKE_EXCEPTION_VECTOR(146) |
---|
217 | MAKE_EXCEPTION_VECTOR(147) |
---|
218 | MAKE_EXCEPTION_VECTOR(148) |
---|
219 | MAKE_EXCEPTION_VECTOR(149) |
---|
220 | |
---|
221 | MAKE_EXCEPTION_VECTOR(150) |
---|
222 | MAKE_EXCEPTION_VECTOR(151) |
---|
223 | MAKE_EXCEPTION_VECTOR(152) |
---|
224 | MAKE_EXCEPTION_VECTOR(153) |
---|
225 | MAKE_EXCEPTION_VECTOR(154) |
---|
226 | MAKE_EXCEPTION_VECTOR(155) |
---|
227 | MAKE_EXCEPTION_VECTOR(156) |
---|
228 | MAKE_EXCEPTION_VECTOR(157) |
---|
229 | MAKE_EXCEPTION_VECTOR(158) |
---|
230 | MAKE_EXCEPTION_VECTOR(159) |
---|
231 | |
---|
232 | MAKE_EXCEPTION_VECTOR(160) |
---|
233 | MAKE_EXCEPTION_VECTOR(161) |
---|
234 | MAKE_EXCEPTION_VECTOR(162) |
---|
235 | MAKE_EXCEPTION_VECTOR(163) |
---|
236 | MAKE_EXCEPTION_VECTOR(164) |
---|
237 | MAKE_EXCEPTION_VECTOR(165) |
---|
238 | MAKE_EXCEPTION_VECTOR(166) |
---|
239 | MAKE_EXCEPTION_VECTOR(167) |
---|
240 | MAKE_EXCEPTION_VECTOR(168) |
---|
241 | MAKE_EXCEPTION_VECTOR(169) |
---|
242 | |
---|
243 | MAKE_EXCEPTION_VECTOR(170) |
---|
244 | MAKE_EXCEPTION_VECTOR(171) |
---|
245 | MAKE_EXCEPTION_VECTOR(172) |
---|
246 | MAKE_EXCEPTION_VECTOR(173) |
---|
247 | MAKE_EXCEPTION_VECTOR(174) |
---|
248 | MAKE_EXCEPTION_VECTOR(175) |
---|
249 | MAKE_EXCEPTION_VECTOR(176) |
---|
250 | MAKE_EXCEPTION_VECTOR(177) |
---|
251 | MAKE_EXCEPTION_VECTOR(178) |
---|
252 | MAKE_EXCEPTION_VECTOR(179) |
---|
253 | |
---|
254 | MAKE_EXCEPTION_VECTOR(180) |
---|
255 | MAKE_EXCEPTION_VECTOR(181) |
---|
256 | MAKE_EXCEPTION_VECTOR(182) |
---|
257 | MAKE_EXCEPTION_VECTOR(183) |
---|
258 | MAKE_EXCEPTION_VECTOR(184) |
---|
259 | MAKE_EXCEPTION_VECTOR(185) |
---|
260 | MAKE_EXCEPTION_VECTOR(186) |
---|
261 | MAKE_EXCEPTION_VECTOR(187) |
---|
262 | MAKE_EXCEPTION_VECTOR(188) |
---|
263 | MAKE_EXCEPTION_VECTOR(189) |
---|
264 | |
---|
265 | MAKE_EXCEPTION_VECTOR(190) |
---|
266 | MAKE_EXCEPTION_VECTOR(191) |
---|
267 | MAKE_EXCEPTION_VECTOR(192) |
---|
268 | MAKE_EXCEPTION_VECTOR(193) |
---|
269 | MAKE_EXCEPTION_VECTOR(194) |
---|
270 | MAKE_EXCEPTION_VECTOR(195) |
---|
271 | MAKE_EXCEPTION_VECTOR(196) |
---|
272 | MAKE_EXCEPTION_VECTOR(197) |
---|
273 | MAKE_EXCEPTION_VECTOR(198) |
---|
274 | MAKE_EXCEPTION_VECTOR(199) |
---|
275 | |
---|
276 | MAKE_EXCEPTION_VECTOR(200) |
---|
277 | MAKE_EXCEPTION_VECTOR(201) |
---|
278 | MAKE_EXCEPTION_VECTOR(202) |
---|
279 | MAKE_EXCEPTION_VECTOR(203) |
---|
280 | MAKE_EXCEPTION_VECTOR(204) |
---|
281 | MAKE_EXCEPTION_VECTOR(205) |
---|
282 | MAKE_EXCEPTION_VECTOR(206) |
---|
283 | MAKE_EXCEPTION_VECTOR(207) |
---|
284 | MAKE_EXCEPTION_VECTOR(208) |
---|
285 | MAKE_EXCEPTION_VECTOR(209) |
---|
286 | |
---|
287 | MAKE_EXCEPTION_VECTOR(210) |
---|
288 | MAKE_EXCEPTION_VECTOR(211) |
---|
289 | MAKE_EXCEPTION_VECTOR(212) |
---|
290 | MAKE_EXCEPTION_VECTOR(213) |
---|
291 | MAKE_EXCEPTION_VECTOR(214) |
---|
292 | MAKE_EXCEPTION_VECTOR(215) |
---|
293 | MAKE_EXCEPTION_VECTOR(216) |
---|
294 | MAKE_EXCEPTION_VECTOR(217) |
---|
295 | MAKE_EXCEPTION_VECTOR(218) |
---|
296 | MAKE_EXCEPTION_VECTOR(219) |
---|
297 | |
---|
298 | MAKE_EXCEPTION_VECTOR(220) |
---|
299 | MAKE_EXCEPTION_VECTOR(221) |
---|
300 | MAKE_EXCEPTION_VECTOR(222) |
---|
301 | MAKE_EXCEPTION_VECTOR(223) |
---|
302 | MAKE_EXCEPTION_VECTOR(224) |
---|
303 | MAKE_EXCEPTION_VECTOR(225) |
---|
304 | MAKE_EXCEPTION_VECTOR(226) |
---|
305 | MAKE_EXCEPTION_VECTOR(227) |
---|
306 | MAKE_EXCEPTION_VECTOR(228) |
---|
307 | MAKE_EXCEPTION_VECTOR(229) |
---|
308 | |
---|
309 | MAKE_EXCEPTION_VECTOR(230) |
---|
310 | MAKE_EXCEPTION_VECTOR(231) |
---|
311 | MAKE_EXCEPTION_VECTOR(232) |
---|
312 | MAKE_EXCEPTION_VECTOR(233) |
---|
313 | MAKE_EXCEPTION_VECTOR(234) |
---|
314 | MAKE_EXCEPTION_VECTOR(235) |
---|
315 | MAKE_EXCEPTION_VECTOR(236) |
---|
316 | MAKE_EXCEPTION_VECTOR(237) |
---|
317 | MAKE_EXCEPTION_VECTOR(238) |
---|
318 | MAKE_EXCEPTION_VECTOR(239) |
---|
319 | |
---|
320 | MAKE_EXCEPTION_VECTOR(240) |
---|
321 | MAKE_EXCEPTION_VECTOR(241) |
---|
322 | MAKE_EXCEPTION_VECTOR(242) |
---|
323 | MAKE_EXCEPTION_VECTOR(243) |
---|
324 | MAKE_EXCEPTION_VECTOR(244) |
---|
325 | MAKE_EXCEPTION_VECTOR(245) |
---|
326 | MAKE_EXCEPTION_VECTOR(246) |
---|
327 | MAKE_EXCEPTION_VECTOR(247) |
---|
328 | MAKE_EXCEPTION_VECTOR(248) |
---|
329 | MAKE_EXCEPTION_VECTOR(249) |
---|
330 | |
---|
331 | MAKE_EXCEPTION_VECTOR(250) |
---|
332 | MAKE_EXCEPTION_VECTOR(251) |
---|
333 | MAKE_EXCEPTION_VECTOR(252) |
---|
334 | MAKE_EXCEPTION_VECTOR(253) |
---|
335 | MAKE_EXCEPTION_VECTOR(254) |
---|
336 | MAKE_EXCEPTION_VECTOR(255) |
---|
337 | #endif |
---|
338 | |
---|
339 | | |
---|
340 | | Start |
---|
341 | | |
---|
342 | | Entered from a hardware reset. |
---|
343 | | |
---|
344 | |
---|
345 | .global start | Default entry point for GNU |
---|
346 | start: |
---|
347 | |
---|
348 | | |
---|
349 | | Copy initialized data area from ROM to RAM |
---|
350 | | |
---|
351 | |
---|
352 | copy_data: |
---|
353 | moveal #_etext,%a0 | find the end of .text |
---|
354 | moveal #_copy_start,%a1 | find the beginning of .data |
---|
355 | moveal #_edata,%a2 | find the end of .data |
---|
356 | |
---|
357 | copy_data_loop: |
---|
358 | |
---|
359 | movel %a0@+,%a1@+ | copy the data |
---|
360 | cmpal %a2,%a1 |
---|
361 | jlt copy_data_loop | loop until edata reached |
---|
362 | |
---|
363 | | |
---|
364 | | zero out uninitialized data area |
---|
365 | | |
---|
366 | |
---|
367 | zerobss: |
---|
368 | moveal #_clear_end,%a0 | find end of .bss |
---|
369 | moveal #_clear_start,%a1 | find beginning of .bss |
---|
370 | moveq #0,%d0 |
---|
371 | |
---|
372 | zerobss_loop: |
---|
373 | |
---|
374 | movel %d0,%a1@+ | to zero out uninitialized |
---|
375 | cmpal %a0,%a1 |
---|
376 | jlt zerobss_loop | loop until _end reached |
---|
377 | |
---|
378 | movel #_stack_init,%d0 | load stack top |
---|
379 | |
---|
380 | movw #0x3700,%sr | SUPV MODE,INTERRUPTS OFF!!! |
---|
381 | movel %d0,%a7 | set master stack pointer |
---|
382 | movel %d0,%a6 | set base pointer |
---|
383 | |
---|
384 | pea env | push environp |
---|
385 | pea arg | push argv |
---|
386 | movel #0,%a7@- | push argc |
---|
387 | jsr boot_card |
---|
388 | | if this returns, what do we do??? |
---|
389 | |
---|
390 | .global bsp_exitted |
---|
391 | bsp_exitted: |
---|
392 | jmp bsp_exitted |
---|
393 | |
---|
394 | | |
---|
395 | | Initialised data |
---|
396 | | |
---|
397 | |
---|
398 | .sect .data |
---|
399 | |
---|
400 | | |
---|
401 | | Uninitialised data |
---|
402 | | |
---|
403 | |
---|
404 | .sect .bss |
---|
405 | |
---|
406 | env: .long 0 |
---|
407 | arg: .long 0 |
---|
408 | |
---|
409 | .global environ |
---|
410 | .align 2 |
---|
411 | |
---|
412 | environ: |
---|
413 | .long env |
---|