=================================================================== RCS file: /cvs/funnyos/arch/sam7s64/boot/loader.S,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- funnyos/arch/sam7s64/boot/loader.S 2007/11/09 15:09:57 1.4 +++ funnyos/arch/sam7s64/boot/loader.S 2007/11/12 15:49:18 1.5 @@ -1,5 +1,5 @@ /* - * $Id: loader.S,v 1.4 2007/11/09 15:09:57 init Exp $ + * $Id: loader.S,v 1.5 2007/11/12 15:49:18 nbrk Exp $ */ /* * FunnyOS loader @@ -22,9 +22,25 @@ _vector_reset: /* * Will enter here just right after RESET. - * Set up stack and call main. + * Relocate .data & .bss into SRAM, set up stack and call main. */ + /* load .data addr */ + ldr r1, Asdata + + /* load end of FLASH */ + ldr r2, Aedata + + /* load addr in sram */ + ldr r3, Asram + + /* copy data in sram */ +loop: + ldr r4, [r1], #4 /* fetch from flash */ + str r4, [r3], #4 /* store to sram */ + cmp r1, r3 /* compare with end of flash */ + bls loop + /* * Setup an IRQ stack */ @@ -76,9 +92,19 @@ _vector_fiq: nop +Asdata: +.word 0x0000f000 + +Aedata: +.word 0x0000ffff + +Asram: +.word 0x00200000 + /* last word of the physical memory */ Asysstack: .word 0x00203fff + Airqstack: .word 0x00203c00