source: rtems/bsps/m68k/genmcf548x/start/start.S @ 947c6645

Last change on this file since 947c6645 was 947c6645, checked in by Christian Mauderer <christian.mauderer@…>, on 03/07/22 at 13:06:23

bsps/m68k: Restore license file

Quite some files in the bsps/m68k/genmcf548x mention a
Freescale_license.txt file. The file has been accidentally removed
during the source reorganization in 2018. This commit restores it and
moves it to the right location for licenses.

Update #4625.

  • Property mode set to 100644
File size: 16.4 KB
Line 
1/*
2 * RTEMS generic mcf548x BSP
3 *
4 * The file contains the assembly part of MCF548x init code.
5 *
6 * Parts of the code has been derived from the "dBUG source code"
7 * package Freescale is providing for M548X EVBs. The usage of
8 * the modified or unmodified code and it's integration into the
9 * generic mcf548x BSP has been done according to the Freescale
10 * license terms.
11 *
12 * The Freescale license terms can be reviewed in the file
13 *
14 *    LICENSE.Freescale
15 *
16 * The generic mcf548x BSP has been developed on the basic
17 * structures and modules of the av5282 BSP.
18 */
19
20/*
21 * Copyright (c) 2007 embedded brains GmbH. All rights reserved.
22 *
23 * The license and distribution terms for this file may be
24 * found in the file LICENSE in this distribution or at
25 * http://www.rtems.org/license/LICENSE.
26 */
27
28/*===============================================================*\
29| Includes                                                        |
30\*===============================================================*/
31#include <rtems/asm.h>
32#include <bsp/linker-symbols.h>
33
34/*===============================================================*\
35| External references                                             |
36\*===============================================================*/
37.extern __MBAR
38.extern _CoreSramBase0
39.extern _CoreSramBase1
40.extern _CoreSramSize1
41.extern mcf548x_init
42.extern boot_card
43
44/*===============================================================*\
45| Global symbols                                                  |
46\*===============================================================*/
47
48.global interrupt_vector_table
49.global spurious_int_count
50.global start
51
52
53/*===============================================================*\
54| Exception Table                                                 |
55\*===============================================================*/
56
57.section ".vectors","ax"             /* begin of vectors section */
58PUBLIC (InterruptVectorTable)
59SYM(InterruptVectorTable):
60INITSP:         .long   _ISR_Stack_area_end /* Initial SP                 */
61INITPC:         .long   start                   /* Initial PC             */
62vector002:      .long   asm_default_interrupt   /* Access Error           */
63vector003:      .long   asm_default_interrupt   /* Address Error          */
64vector004:      .long   asm_default_interrupt   /* Illegal Instruction    */
65vector005:      .long   asm_default_interrupt   /* Reserved               */
66vector006:      .long   asm_default_interrupt   /* Reserved               */
67vector007:      .long   asm_default_interrupt   /* Reserved               */
68vector008:      .long   asm_default_interrupt   /* Privilege Violation    */
69vector009:      .long   asm_default_interrupt   /* Trace                  */
70vector010:      .long   asm_default_interrupt   /* Unimplemented A-Line   */
71vector011:      .long   asm_default_interrupt   /* Unimplemented F-Line   */
72vector012:      .long   asm_default_interrupt   /* Debug Interrupt        */
73vector013:      .long   asm_default_interrupt   /* Reserved               */
74vector014:      .long   asm_default_interrupt   /* Format Error           */
75vector015:      .long   asm_default_interrupt   /* Unitialized Int.       */
76vector016:      .long   asm_default_interrupt   /* Reserved               */
77vector017:      .long   asm_default_interrupt   /* Reserved               */
78vector018:      .long   asm_default_interrupt   /* Reserved               */
79vector019:      .long   asm_default_interrupt   /* Reserved               */
80vector020:      .long   asm_default_interrupt   /* Reserved               */
81vector021:      .long   asm_default_interrupt   /* Reserved               */
82vector022:      .long   asm_default_interrupt   /* Reserved               */
83vector023:      .long   asm_default_interrupt   /* Reserved               */
84vector024:      .long   asm_spurious_interrupt  /* Spurious Interrupt     */
85vector025:      .long   asm_default_interrupt   /* Autovector Level 1     */
86vector026:      .long   asm_default_interrupt   /* Autovector Level 2     */
87vector027:      .long   asm_default_interrupt   /* Autovector Level 3     */
88vector028:      .long   asm_default_interrupt   /* Autovector Level 4     */
89vector029:      .long   asm_default_interrupt   /* Autovector Level 5     */
90vector030:      .long   asm_default_interrupt   /* Autovector Level 6     */
91vector031:      .long   asm_default_interrupt   /* Autovector Level 7     */
92vector032:      .long   asm_default_interrupt   /* TRAP #0                */
93vector033:      .long   asm_default_interrupt   /* TRAP #1                */
94vector034:      .long   asm_default_interrupt   /* TRAP #2                */
95vector035:      .long   asm_default_interrupt   /* TRAP #3                */
96vector036:      .long   asm_default_interrupt   /* TRAP #4                */
97vector037:      .long   asm_default_interrupt   /* TRAP #5                */
98vector038:      .long   asm_default_interrupt   /* TRAP #6                */
99vector039:      .long   asm_default_interrupt   /* TRAP #7                */
100vector040:      .long   asm_default_interrupt   /* TRAP #8                */
101vector041:      .long   asm_default_interrupt   /* TRAP #9                */
102vector042:      .long   asm_default_interrupt   /* TRAP #10               */
103vector043:      .long   asm_default_interrupt   /* TRAP #11               */
104vector044:      .long   asm_default_interrupt   /* TRAP #12               */
105vector045:      .long   asm_default_interrupt   /* TRAP #13               */
106vector046:      .long   asm_default_interrupt   /* TRAP #14               */
107vector047:      .long   asm_default_interrupt   /* TRAP #15               */
108vector048:      .long   asm_default_interrupt   /* Reserved               */
109vector049:      .long   asm_default_interrupt   /* Reserved               */
110vector050:      .long   asm_default_interrupt   /* Reserved               */
111vector051:      .long   asm_default_interrupt   /* Reserved               */
112vector052:      .long   asm_default_interrupt   /* Reserved               */
113vector053:      .long   asm_default_interrupt   /* Reserved               */
114vector054:      .long   asm_default_interrupt   /* Reserved               */
115vector055:      .long   asm_default_interrupt   /* Reserved               */
116vector056:      .long   asm_default_interrupt   /* Reserved               */
117vector057:      .long   asm_default_interrupt   /* Reserved               */
118vector058:      .long   asm_default_interrupt   /* Reserved               */
119vector059:      .long   asm_default_interrupt   /* Reserved               */
120vector060:      .long   asm_default_interrupt   /* Reserved               */
121vector061:      .long   asm_default_interrupt   /* Reserved               */
122vector062:      .long   asm_default_interrupt   /* Reserved               */
123vector063:      .long   asm_default_interrupt   /* Reserved               */
124vector064:      .long   asm_default_interrupt
125vector065:      .long   asm_default_interrupt
126vector066:      .long   asm_default_interrupt
127vector067:      .long   asm_default_interrupt
128vector068:      .long   asm_default_interrupt
129vector069:      .long   asm_default_interrupt
130vector070:      .long   asm_default_interrupt
131vector071:      .long   asm_default_interrupt
132vector072:      .long   asm_default_interrupt
133vector073:      .long   asm_default_interrupt
134vector074:      .long   asm_default_interrupt
135vector075:      .long   asm_default_interrupt
136vector076:      .long   asm_default_interrupt
137vector077:      .long   asm_default_interrupt
138vector078:      .long   asm_default_interrupt
139vector079:      .long   asm_default_interrupt
140vector080:      .long   asm_default_interrupt
141vector081:      .long   asm_default_interrupt
142vector082:      .long   asm_default_interrupt
143vector083:      .long   asm_default_interrupt
144vector084:      .long   asm_default_interrupt
145vector085:      .long   asm_default_interrupt
146vector086:      .long   asm_default_interrupt
147vector087:      .long   asm_default_interrupt
148vector088:      .long   asm_default_interrupt
149vector089:      .long   asm_default_interrupt
150vector090:      .long   asm_default_interrupt
151vector091:      .long   asm_default_interrupt
152vector092:      .long   asm_default_interrupt
153vector093:      .long   asm_default_interrupt
154vector094:      .long   asm_default_interrupt
155vector095:      .long   asm_default_interrupt
156vector096:      .long   asm_default_interrupt
157vector097:      .long   asm_default_interrupt
158vector098:      .long   asm_default_interrupt
159vector099:      .long   asm_default_interrupt
160vector100:      .long   asm_default_interrupt
161vector101:      .long   asm_default_interrupt
162vector102:      .long   asm_default_interrupt
163vector103:      .long   asm_default_interrupt
164vector104:      .long   asm_default_interrupt
165vector105:      .long   asm_default_interrupt
166vector106:      .long   asm_default_interrupt
167vector107:      .long   asm_default_interrupt
168vector108:      .long   asm_default_interrupt
169vector109:      .long   asm_default_interrupt
170vector110:      .long   asm_default_interrupt
171vector111:      .long   asm_default_interrupt
172vector112:      .long   asm_default_interrupt
173vector113:      .long   asm_default_interrupt
174vector114:      .long   asm_default_interrupt
175vector115:      .long   asm_default_interrupt
176vector116:      .long   asm_default_interrupt
177vector117:      .long   asm_default_interrupt
178vector118:      .long   asm_default_interrupt
179vector119:      .long   asm_default_interrupt
180vector120:      .long   asm_default_interrupt
181vector121:      .long   asm_default_interrupt
182vector122:      .long   asm_default_interrupt
183vector123:      .long   asm_default_interrupt
184vector124:      .long   asm_default_interrupt
185vector125:      .long   asm_default_interrupt
186vector126:      .long   asm_default_interrupt
187vector127:      .long   asm_default_interrupt
188vector128:      .long   asm_default_interrupt
189vector129:      .long   asm_default_interrupt
190vector130:      .long   asm_default_interrupt
191vector131:      .long   asm_default_interrupt
192vector132:      .long   asm_default_interrupt
193vector133:      .long   asm_default_interrupt
194vector134:      .long   asm_default_interrupt
195vector135:      .long   asm_default_interrupt
196vector136:      .long   asm_default_interrupt
197vector137:      .long   asm_default_interrupt
198vector138:      .long   asm_default_interrupt
199vector139:      .long   asm_default_interrupt
200vector140:      .long   asm_default_interrupt
201vector141:      .long   asm_default_interrupt
202vector142:      .long   asm_default_interrupt
203vector143:      .long   asm_default_interrupt
204vector144:      .long   asm_default_interrupt
205vector145:      .long   asm_default_interrupt
206vector146:      .long   asm_default_interrupt
207vector147:      .long   asm_default_interrupt
208vector148:      .long   asm_default_interrupt
209vector149:      .long   asm_default_interrupt
210vector150:      .long   asm_default_interrupt
211vector151:      .long   asm_default_interrupt
212vector152:      .long   asm_default_interrupt
213vector153:      .long   asm_default_interrupt
214vector154:      .long   asm_default_interrupt
215vector155:      .long   asm_default_interrupt
216vector156:      .long   asm_default_interrupt
217vector157:      .long   asm_default_interrupt
218vector158:      .long   asm_default_interrupt
219vector159:      .long   asm_default_interrupt
220vector160:      .long   asm_default_interrupt
221vector161:      .long   asm_default_interrupt
222vector162:      .long   asm_default_interrupt
223vector163:      .long   asm_default_interrupt
224vector164:      .long   asm_default_interrupt
225vector165:      .long   asm_default_interrupt
226vector166:      .long   asm_default_interrupt
227vector167:      .long   asm_default_interrupt
228vector168:      .long   asm_default_interrupt
229vector169:      .long   asm_default_interrupt
230vector170:      .long   asm_default_interrupt
231vector171:      .long   asm_default_interrupt
232vector172:      .long   asm_default_interrupt
233vector173:      .long   asm_default_interrupt
234vector174:      .long   asm_default_interrupt
235vector175:      .long   asm_default_interrupt
236vector176:      .long   asm_default_interrupt
237vector177:      .long   asm_default_interrupt
238vector178:      .long   asm_default_interrupt
239vector179:      .long   asm_default_interrupt
240vector180:      .long   asm_default_interrupt
241vector181:      .long   asm_default_interrupt
242vector182:      .long   asm_default_interrupt
243vector183:      .long   asm_default_interrupt
244vector184:      .long   asm_default_interrupt
245vector185:      .long   asm_default_interrupt
246vector186:      .long   asm_default_interrupt
247vector187:      .long   asm_default_interrupt
248vector188:      .long   asm_default_interrupt
249vector189:      .long   asm_default_interrupt
250vector190:      .long   asm_default_interrupt
251vector191:      .long   asm_default_interrupt
252vector192:      .long   asm_default_interrupt
253vector193:      .long   asm_default_interrupt
254vector194:      .long   asm_default_interrupt
255vector195:      .long   asm_default_interrupt
256vector196:      .long   asm_default_interrupt
257vector197:      .long   asm_default_interrupt
258vector198:      .long   asm_default_interrupt
259vector199:      .long   asm_default_interrupt
260vector200:      .long   asm_default_interrupt
261vector201:      .long   asm_default_interrupt
262vector202:      .long   asm_default_interrupt
263vector203:      .long   asm_default_interrupt
264vector204:      .long   asm_default_interrupt
265vector205:      .long   asm_default_interrupt
266vector206:      .long   asm_default_interrupt
267vector207:      .long   asm_default_interrupt
268vector208:      .long   asm_default_interrupt
269vector209:      .long   asm_default_interrupt
270vector210:      .long   asm_default_interrupt
271vector211:      .long   asm_default_interrupt
272vector212:      .long   asm_default_interrupt
273vector213:      .long   asm_default_interrupt
274vector214:      .long   asm_default_interrupt
275vector215:      .long   asm_default_interrupt
276vector216:      .long   asm_default_interrupt
277vector217:      .long   asm_default_interrupt
278vector218:      .long   asm_default_interrupt
279vector219:      .long   asm_default_interrupt
280vector220:      .long   asm_default_interrupt
281vector221:      .long   asm_default_interrupt
282vector222:      .long   asm_default_interrupt
283vector223:      .long   asm_default_interrupt
284vector224:      .long   asm_default_interrupt
285vector225:      .long   asm_default_interrupt
286vector226:      .long   asm_default_interrupt
287vector227:      .long   asm_default_interrupt
288vector228:      .long   asm_default_interrupt
289vector229:      .long   asm_default_interrupt
290vector230:      .long   asm_default_interrupt
291vector231:      .long   asm_default_interrupt
292vector232:      .long   asm_default_interrupt
293vector233:      .long   asm_default_interrupt
294vector234:      .long   asm_default_interrupt
295vector235:      .long   asm_default_interrupt
296vector236:      .long   asm_default_interrupt
297vector237:      .long   asm_default_interrupt
298vector238:      .long   asm_default_interrupt
299vector239:      .long   asm_default_interrupt
300vector240:      .long   asm_default_interrupt
301vector241:      .long   asm_default_interrupt
302vector242:      .long   asm_default_interrupt
303vector243:      .long   asm_default_interrupt
304vector244:      .long   asm_default_interrupt
305vector245:      .long   asm_default_interrupt
306vector246:      .long   asm_default_interrupt
307vector247:      .long   asm_default_interrupt
308vector248:      .long   asm_default_interrupt
309vector249:      .long   asm_default_interrupt
310vector250:      .long   asm_default_interrupt
311vector251:      .long   asm_default_interrupt
312vector252:      .long   asm_default_interrupt
313vector253:      .long   asm_default_interrupt
314vector254:      .long   asm_default_interrupt
315vector255:      .long   asm_default_interrupt
316
317/*===============================================================*\
318| Start of code                                                   |
319\*===============================================================*/
320.text
321PUBLIC (start)
322SYM(start):
323    move.w      #0x3700,sr              /* disable interrupts */
324    jmp         start_init
325
326/*===============================================================*\
327| Sspurious interrupt counter                                     |
328\*===============================================================*/
329.align 4
330.data                                   /* begin of data section */
331PUBLIC (spurious_int_count)
332SYM(spurious_int_count):
333    .long   0                           /* spurious interrupt counter */
334
335/*===============================================================*\
336| Function: Default exception handler                             |
337+-----------------------------------------------------------------+
338| - stop and disable all interrupts                               |
339| - loop forever                                                  |
340\*===============================================================*/
341.text                                   /* start of text section */
342.align 4
343PUBLIC (asm_default_interrupt)
344SYM(asm_default_interrupt):
345    nop
346    stop    #0x3700                     /* stop */
347    bra.w   asm_default_interrupt       /* loop forever */
348
349/*===============================================================*\
350| Function: Exception handler for spurious interrupts             |
351+-----------------------------------------------------------------+
352| - count spurious interrupts                                     |
353\*===============================================================*/
354.align 4
355PUBLIC (asm_spurious_interrupt)
356SYM(asm_spurious_interrupt):
357    add.l   #1,spurious_int_count
358    rte
359
360/*===============================================================*\
361| Function: start_init                                            |
362+-----------------------------------------------------------------+
363| - Disable all intterupts                                        |
364| - Setup the internal SRAM                                       |
365| - Initialize mcf548x peripherals                                |
366| - Set initial stack pointer                                     |
367| - Boot RTEMS
368\*===============================================================*/
369.align 4
370PUBLIC (start_init)
371SYM(start_init):
372
373    move.l  #0x01040100,d0              /* invalidate instruction/data/branch cache, disable all caches */
374    movec   d0,cacr
375
376    move.l  #_CoreSramBase0,d0          /* initialize RAMBAR0 */
377    add.l   #0x21,d0                    /* for code & data    */
378    movec   d0,rambar0
379
380    move.l  #_CoreSramBase1,d0          /* initialize RAMBAR1 */
381    add.l   #0x21,d0                    /* for code & data    */
382    movec   d0,rambar1                  /* movec d0,RAMBAR1   */
383
384    move.l  #__MBAR,d0                  /* initialize MBAR */
385    movec   d0,mbar
386
387    move.l  #_CoreSramBase1,d0          /* set sp to end of Core SRAM temporarily */
388    add.l   #_CoreSramSize1,d0
389    move.l  d0,sp
390
391    move.l  #0,d0                       /* initialize frame pointer */
392    movea.l d0,a6
393
394    jsr     mcf548x_init                /* Initialize mcf548x peripherals */
395
396    move.l  #_ISR_Stack_area_end,sp /* relocate sp */
397
398    clrl    d0                          /* clear d0 */
399    movel   d0,a7@-                     /* command line == 0 */
400
401    jsr     boot_card                   /* boot rtems */
402
403    movel   a7@+,d0
404
405exit_multitasking:
406    nop
407    nop
408    halt
409    bra     exit_multitasking
410
411.end                                    /* end of start.S module */
412
413
414
Note: See TracBrowser for help on using the repository browser.