4 #if defined(__GNUC__)
\r
7 #elif defined(__CWCC__) || defined(__DCC__)
\r
12 .global _resetconfiguration
\r
13 _resetconfiguration:
\r
14 #if defined(CFG_VLE)
\r
15 .byte 0x01 #no watchdog, VLE
\r
17 .byte 0x00 #no watchdog
\r
19 .byte 0x5A #Boot identifier
\r
36 #if defined(__CWCC__) && defined(CFG_VLE)
\r
37 .section .text_vle,text_vle
\r
38 #elif defined(__DCC__)
\r
39 // Must be indented (diab)
\r
40 .section .text_vle,x
\r
41 #elif defined(__GNUC__)
\r
47 .type _start,@function
\r
49 // Good information about the E500 is freescale doc: E500ABIUG.pdf
\r
54 // mpc5567qrtech: light up led K2
\r
56 lis r3, 0xC3F9013A@h
\r
57 ori r3, r3, 0xC3F90130@l
\r
65 // For now, close down the watchdog.
\r
66 LOAD_ADDR_32(r8,0xFFF38000)
\r
67 LOAD_ADDR_32(r9,0x0000c520)
\r
69 LOAD_ADDR_32(r9,0x0000d928)
\r
71 LOAD_ADDR_32(r9,0x8000010A)
\r
75 // Set up the reserved registers in EABI: r1,r2 and r13
\r
77 // r1, stack pointer
\r
78 LOAD_ADDR_32(1,__SP_INIT)
\r
80 // r13, base of .sdata
\r
81 LOAD_ADDR_32(13,_SDA_BASE_)
\r
83 // r2, base of .sdata2 and .sbss2
\r
84 LOAD_ADDR_32(2,_SDA2_BASE_)
\r
86 // make space for initial backchain..
\r
89 /* Store winIDEA terminal connected status */
\r
90 #if defined(USE_TTY_WINIDEA)
\r
91 LOAD_ADDR_32(r8,g_TConn)
\r
95 /* Clear all SRAM */
\r
97 LOAD_ADDR_32(11,0x40000000)
\r
98 #if defined(CFG_MPC560X) && !defined(CFG_MPC5606B)
\r
99 li r12,384 # loop counter to get all of SRAM;
\r
100 /* 48k/4 bytes/32 GPRs = 384, only 48k ram for MPC5606s */
\r
102 li r12,640 # loop counter to get all of SRAM;
\r
103 /* 80k/4 bytes/32 GPRs = 640 */
\r
108 stmw r0,0(r11) # write all 32 GPRs to SRAM
\r
109 addi r11,r11,128 # inc the ram ptr; 32 GPRs * 4 bytes = 128
\r
110 bdnz init_ram_loop # loop for 80k of SRAM
\r
113 // Copy initialized data from ROM to RAM
\r
114 LOAD_ADDR_32(3,__DATA_ROM)
\r
115 LOAD_ADDR_32(4,__DATA_RAM)
\r
116 LOAD_ADDR_32(5,__DATA_END)
\r
131 /* Clear uninitialized data( holds both bss and sbss ) */
\r
132 LOAD_ADDR_32(3,__BSS_START)
\r
133 LOAD_ADDR_32(4,__BSS_END)
\r
144 /* Restore winIDEA terminal connected status */
\r
145 #if defined(USE_TTY_WINIDEA)
\r
149 /* Call main() with argc set to 1 and argv ignored */
\r
153 /* Call exit() with the return value from main() as argument */
\r