4 .global _resetconfiguration
\r
6 .byte 0x00 #no watchdog
\r
7 .byte 0x5A #Boot identifier
\r
17 .type _start,@function
\r
19 // Good information about the E500 is freescale doc: E500ABIUG.pdf
\r
21 // Set up the reserved registers in EABI: r1,r2 and r13
\r
23 // r1, stack pointer
\r
25 ori r1,r1,__SP_INIT@l
\r
27 // r13, base of .sdata
\r
28 lis r13,_SDA_BASE_@h
\r
29 ori r13,r13,_SDA_BASE_@l
\r
31 // r2, base of .sdata2 and .sbss2
\r
32 lis r2,_SDA2_BASE_@h
\r
33 ori r2,r2,_SDA2_BASE_@l
\r
35 // make space for initial backchain..
\r
38 // Copy initialized data from ROM to RAM
\r
40 ori r3,r3,__DATA_ROM@l
\r
42 ori r4,r4,__DATA_RAM@l
\r
44 ori r5,r5,__DATA_END@l
\r
59 # Clear uninitialized data( holds both bss and sbss )
\r
60 lis r3,__BSS_START@h
\r
61 ori r3,r3,__BSS_START@l
\r
63 ori r4,r4,__BSS_END@l
\r
74 # Call main() with argc set to 1 and argv ignored
\r
78 # Call exit() with the return value from main() as argument
\r