2 * File: mcf5225x_lo.s
\r
3 * Purpose: Low-level routines for the MCF5225x.
\r
7 * License: All software covered by license agreement in -
\r
8 * docs/Freescale_Software_License.pdf
\r
11 #define mcf5225x_init _mcf5225x_init
\r
12 #define common_startup _common_startup
\r
13 #define cpu_startup _cpu_startup
\r
15 #define __IPSBAR ___IPSBAR
\r
16 #define __SRAM ___SRAM
\r
17 #define __FLASH ___FLASH
\r
18 #define __SP_INIT ___SP_INIT
\r
24 .extern mcf5225x_init
\r
25 .extern common_startup
\r
29 .global asm_startmeup
\r
30 .global _asm_startmeup
\r
45 /********************************************************************
\r
47 * This is the main entry point upon hard reset. The memory map is
\r
48 * setup based on linker file definitions, then the higher level
\r
49 * system initialization routine is called. Finally, we jump to the
\r
57 /* Save off reset values of D0 and D1 */
\r
61 /* Initialize RAMBAR1: locate SRAM and validate it */
\r
63 andi.l #0xFFFF0000,d0
\r
67 /* Locate Stack Pointer */
\r
68 move.l #__SP_INIT,sp
\r
70 /* Initialize IPSBAR */
\r
73 move.l d0,0x40000000
\r
75 /* Initialize FLASHBAR */
\r
77 cmp.l #0x00000000,d0
\r
84 /* Locate Stack Pointer */
\r
85 move.l #__SP_INIT,sp
\r
87 /* Initialize the system */
\r
90 /* Common startup code */
\r
91 //jsr common_startup
\r
93 /* Save off intial D0 and D1 to RAM */
\r
97 /* CPU specific startup code */
\r
100 /* Jump to the main process */
\r
110 * The following sequence is used to set FLASHBAR. Since we may
\r
111 * be executing from Flash, we must put the routine into SRAM for
\r
112 * execution and then jump back to Flash using the new address.
\r
114 * The following instructions are coded into the SRAM:
\r
116 * move.l #(__FLASH + 0x21),d0
\r
117 * movec d0, RAMBAR0
\r
118 * jmp _continue_startup
\r
120 * An arbitrary SRAM address is chosen until the real address
\r
123 * This routine is not necessary if the default Flash address
\r
124 * (0x00000000) is used.
\r
126 * If running in SRAM, change_flashbar should not be executed
\r
131 /* Code "move.l #(__FLASH + 0x21),d0" into SRAM */
\r
138 /* Code "movec d0,FLASHBAR" into SRAM */
\r
139 move.l #0x4e7b0C04,d0
\r
142 /* Code "jmp _continue_startup" into SRAM */
\r
145 move.l #_continue_startup,d0
\r
148 /* Jump to code segment in internal SRAM */
\r
151 /********************************************************************/
\r