diff options
| author | Michael Sevakis <jethead71@rockbox.org> | 2008-05-05 13:30:29 +0000 |
|---|---|---|
| committer | Michael Sevakis <jethead71@rockbox.org> | 2008-05-05 13:30:29 +0000 |
| commit | 0218397cf4f0420a258a8ff6d87cc630cb3bada6 (patch) | |
| tree | bdbb8dc54258e5aa23ede898e2bca90b8a459206 | |
| parent | 9a54d9645df4b08789dcf5a7a74e60bf84e407be (diff) | |
| download | rockbox-0218397cf4f0420a258a8ff6d87cc630cb3bada6.zip rockbox-0218397cf4f0420a258a8ff6d87cc630cb3bada6.tar.gz rockbox-0218397cf4f0420a258a8ff6d87cc630cb3bada6.tar.bz2 rockbox-0218397cf4f0420a258a8ff6d87cc630cb3bada6.tar.xz | |
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
| -rw-r--r-- | bootloader/gigabeat-s.c | 5 | ||||
| -rw-r--r-- | firmware/target/arm/imx31/boot.lds | 24 |
2 files changed, 16 insertions, 13 deletions
diff --git a/bootloader/gigabeat-s.c b/bootloader/gigabeat-s.c index 8858479..abfe57c 100644 --- a/bootloader/gigabeat-s.c +++ b/bootloader/gigabeat-s.c @@ -147,8 +147,11 @@ void main(void) char tarstring[6]; char model[5]; + /* Flush and invalidate all caches (because vectors were written) */ + invalidate_icache(); + lcd_clear_display(); - printf("Gigabeat S Rockbox Bootloader v.00000011"); + printf("Gigabeat S Rockbox Bootloader v.00000012"); system_init(); kernel_init(); printf("kernel init done"); diff --git a/firmware/target/arm/imx31/boot.lds b/firmware/target/arm/imx31/boot.lds index d8bb2fc..a7570c1 100644 --- a/firmware/target/arm/imx31/boot.lds +++ b/firmware/target/arm/imx31/boot.lds @@ -56,8 +56,17 @@ SECTIONS . = ALIGN(0x4); _dataend = . ; } > DRAM + + .vectors 0x0 : + { + _vectorsstart = .; + *(.vectors); + KEEP(*(.vectors)); + _vectorsend = .; + } AT > DRAM + _vectorscopy = LOADADDR(.vectors); - .stack : + .stack (NOLOAD) : { *(.stack) _stackbegin = .; @@ -67,7 +76,7 @@ SECTIONS stackend = .; } > IRAM - .bss : + .bss (NOLOAD) : { _edata = .; *(.bss*); @@ -75,16 +84,7 @@ SECTIONS *(COMMON) _end = .; } > DRAM - - .vectors 0x0 : - { - _vectorsstart = .; - *(.vectors); - KEEP(*(.vectors)); - _vectorsend = .; - } AT > DRAM - _vectorscopy = LOADADDR(.vectors); - + .devbss (NOLOAD) : { _devbssdata = .; |