summaryrefslogtreecommitdiff
path: root/bootloader/gigabeat-s.c
diff options
context:
space:
mode:
Diffstat (limited to 'bootloader/gigabeat-s.c')
-rw-r--r--bootloader/gigabeat-s.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/bootloader/gigabeat-s.c b/bootloader/gigabeat-s.c
index a4e6391c7e..f3e2917131 100644
--- a/bootloader/gigabeat-s.c
+++ b/bootloader/gigabeat-s.c
@@ -52,16 +52,27 @@ char buf[MAX_PATH];
52char basedir[] = "/Content/0b00/00/"; /* Where files sent via MTP are stored */ 52char basedir[] = "/Content/0b00/00/"; /* Where files sent via MTP are stored */
53char model[5]; 53char model[5];
54int (*kernel_entry)(void); 54int (*kernel_entry)(void);
55extern void reference_system_c(void);
56
57/* Dummy stub that creates C references for C functions only used by
58 assembly - never called */
59void reference_files(void)
60{
61 reference_system_c();
62}
55 63
56void main(void) 64void main(void)
57{ 65{
58 lcd_clear_display(); 66 lcd_clear_display();
59 printf("Hello world!"); 67 printf("Hello world!");
60 printf("Gigabeat S Rockbox Bootloader v.00000002"); 68 printf("Gigabeat S Rockbox Bootloader v.00000003");
69 system_init();
61 kernel_init(); 70 kernel_init();
62 printf("kernel init done"); 71 printf("kernel init done");
63 int rc; 72 int rc;
64 73
74 set_interrupt_status(IRQ_FIQ_ENABLED, IRQ_FIQ_STATUS);
75
65 rc = ata_init(); 76 rc = ata_init();
66 if(rc) 77 if(rc)
67 { 78 {
@@ -109,11 +120,13 @@ void main(void)
109 printf("Loading firmware"); 120 printf("Loading firmware");
110 121
111 unsigned char *loadbuffer = (unsigned char *)0x0; 122 unsigned char *loadbuffer = (unsigned char *)0x0;
112 int buffer_size = 1024*1024; 123 int buffer_size = 31*1024*1024;
113 124
114 rc = load_firmware(loadbuffer, buf, buffer_size); 125 rc = load_firmware(loadbuffer, buf, buffer_size);
115 if(rc < 0) 126 if(rc < 0)
116 error(buf, rc); 127 error((int)buf, rc);
128
129 system_prepare_fw_start();
117 130
118 if (rc == EOK) 131 if (rc == EOK)
119 { 132 {