Gigabeat S bootloader: 1) Switch order of .vectors to be contiguous with initialized sections. 2) Clean all caches in main before doing anything else because vector copying counts as self-modifying code. Up to v.00000012.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17381 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Michael Sevakis 2008-05-05 13:30:29 +00:00
parent 9a54d9645d
commit 0218397cf4
2 changed files with 16 additions and 13 deletions

View file

@ -147,8 +147,11 @@ void main(void)
char tarstring[6]; char tarstring[6];
char model[5]; char model[5];
/* Flush and invalidate all caches (because vectors were written) */
invalidate_icache();
lcd_clear_display(); lcd_clear_display();
printf("Gigabeat S Rockbox Bootloader v.00000011"); printf("Gigabeat S Rockbox Bootloader v.00000012");
system_init(); system_init();
kernel_init(); kernel_init();
printf("kernel init done"); printf("kernel init done");

View file

@ -56,8 +56,17 @@ SECTIONS
. = ALIGN(0x4); . = ALIGN(0x4);
_dataend = . ; _dataend = . ;
} > DRAM } > DRAM
.vectors 0x0 :
{
_vectorsstart = .;
*(.vectors);
KEEP(*(.vectors));
_vectorsend = .;
} AT > DRAM
_vectorscopy = LOADADDR(.vectors);
.stack : .stack (NOLOAD) :
{ {
*(.stack) *(.stack)
_stackbegin = .; _stackbegin = .;
@ -67,7 +76,7 @@ SECTIONS
stackend = .; stackend = .;
} > IRAM } > IRAM
.bss : .bss (NOLOAD) :
{ {
_edata = .; _edata = .;
*(.bss*); *(.bss*);
@ -75,16 +84,7 @@ SECTIONS
*(COMMON) *(COMMON)
_end = .; _end = .;
} > DRAM } > DRAM
.vectors 0x0 :
{
_vectorsstart = .;
*(.vectors);
KEEP(*(.vectors));
_vectorsend = .;
} AT > DRAM
_vectorscopy = LOADADDR(.vectors);
.devbss (NOLOAD) : .devbss (NOLOAD) :
{ {
_devbssdata = .; _devbssdata = .;