diff options
Diffstat (limited to 'bootloader/gigabeat.c')
-rw-r--r-- | bootloader/gigabeat.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/bootloader/gigabeat.c b/bootloader/gigabeat.c index 11ab93a5e2..a3732b0e06 100644 --- a/bootloader/gigabeat.c +++ b/bootloader/gigabeat.c | |||
@@ -75,11 +75,14 @@ void main(void) | |||
75 | int(*kernel_entry)(void); | 75 | int(*kernel_entry)(void); |
76 | 76 | ||
77 | system_init(); | 77 | system_init(); |
78 | kernel_init(); /* Need the kernel to sleep */ | ||
79 | |||
80 | enable_interrupt(IRQ_FIQ_STATUS); | ||
81 | |||
78 | lcd_init(); | 82 | lcd_init(); |
79 | backlight_init(); | 83 | backlight_init(); |
80 | button_init(); | 84 | button_init(); |
81 | font_init(); | 85 | font_init(); |
82 | kernel_init(); /* Need the kernel to sleep */ | ||
83 | adc_init(); | 86 | adc_init(); |
84 | 87 | ||
85 | lcd_setfont(FONT_SYSFIXED); | 88 | lcd_setfont(FONT_SYSFIXED); |
@@ -192,6 +195,9 @@ void main(void) | |||
192 | 195 | ||
193 | printf("Loading firmware"); | 196 | printf("Loading firmware"); |
194 | 197 | ||
198 | /* Flush out anything pending first */ | ||
199 | invalidate_icache(); | ||
200 | |||
195 | loadbuffer = (unsigned char*) 0x31000000; | 201 | loadbuffer = (unsigned char*) 0x31000000; |
196 | buffer_size = (unsigned char*)0x31400000 - loadbuffer; | 202 | buffer_size = (unsigned char*)0x31400000 - loadbuffer; |
197 | 203 | ||
@@ -199,10 +205,22 @@ void main(void) | |||
199 | if(rc < 0) | 205 | if(rc < 0) |
200 | error(EBOOTFILE, rc); | 206 | error(EBOOTFILE, rc); |
201 | 207 | ||
208 | storage_close(); | ||
209 | system_prepare_fw_start(); | ||
210 | |||
202 | if (rc == EOK) | 211 | if (rc == EOK) |
203 | { | 212 | { |
213 | invalidate_icache(); | ||
204 | kernel_entry = (void*) loadbuffer; | 214 | kernel_entry = (void*) loadbuffer; |
205 | rc = kernel_entry(); | 215 | rc = kernel_entry(); |
206 | } | 216 | } |
217 | |||
218 | #if 0 | ||
219 | /* Halt */ | ||
220 | while (1) | ||
221 | core_idle(); | ||
222 | #else | ||
223 | /* Return and restart */ | ||
224 | #endif | ||
207 | } | 225 | } |
208 | 226 | ||