5 #include "gcc_extensions.h"
10 #include "button-target.h"
19 #include "crc32-rkw.h"
20 #include "rkw-loader.h"
22 #define DRAM_ORIG 0x60000000
23 #define LOAD_SIZE 0x700000
25 extern void show_logo( void );
27 void main(void) NORETURN_ATTR
;
30 char filename
[MAX_PATH
];
31 unsigned char* loadbuffer
;
32 void(*kernel_entry
)(void);
34 enum {rb
, of
} boot
= rb
;
47 lcd_setfont(FONT_SYSFIXED
);
51 int btn
= button_read_device();
53 /* if there is some other button pressed
54 * besides POWER/PLAY we boot into OF
56 if ((btn
& ~POWEROFF_BUTTON
))
59 /* if we are woken up by USB insert boot into OF */
60 if (DEV_INFO
& (1<<20))
67 error(EATA
, ret
, true);
69 while(!disk_init(IF_MV(0)))
70 panicf("disk_init failed!");
72 while((ret
= disk_mount_all()) <= 0)
73 error(EDISK
, ret
, true);
75 loadbuffer
= (unsigned char*)DRAM_ORIG
; /* DRAM */
78 snprintf(filename
,sizeof(filename
), BOOTDIR
"/%s", BOOTFILE
);
80 snprintf(filename
,sizeof(filename
), BOOTDIR
"/%s", "BASE.RKW");
82 printf("Loading: %s", filename
);
84 ret
= load_rkw(loadbuffer
, filename
, LOAD_SIZE
);
87 printf(rkw_strerror(ret
));
94 printf(rkw_strerror(0));
98 kernel_entry
= (void*) loadbuffer
;
99 commit_discard_idcache();
104 printf("ERR: Failed to boot");