summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bootloader/gigabeat-s.c5
-rw-r--r--firmware/target/arm/imx31/boot.lds24
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 = .;