summaryrefslogtreecommitdiff
path: root/bootloader/x1000.c
diff options
context:
space:
mode:
Diffstat (limited to 'bootloader/x1000.c')
-rw-r--r--bootloader/x1000.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/bootloader/x1000.c b/bootloader/x1000.c
index bce7b69784..14634683e6 100644
--- a/bootloader/x1000.c
+++ b/bootloader/x1000.c
@@ -137,11 +137,6 @@ const struct menuitem recovery_items[] = {
137 {MENUITEM_ACTION, "Restore", &bootloader_restore}, 137 {MENUITEM_ACTION, "Restore", &bootloader_restore},
138}; 138};
139 139
140/* Temp buffer to contain the binary in memory */
141extern unsigned char loadbuffer[];
142extern unsigned char loadbufferend[];
143#define MAX_LOAD_SIZE (loadbufferend - loadbuffer)
144
145/* Flags to indicate if hardware was already initialized */ 140/* Flags to indicate if hardware was already initialized */
146bool lcd_inited = false; 141bool lcd_inited = false;
147bool usb_inited = false; 142bool usb_inited = false;
@@ -340,8 +335,17 @@ void boot_rockbox(void)
340 if(init_disk() != 0) 335 if(init_disk() != 0)
341 return; 336 return;
342 337
343 int rc = load_firmware(loadbuffer, BOOTFILE, MAX_LOAD_SIZE); 338 size_t max_size = 0;
339 int handle = core_alloc_maximum("rockbox", &max_size, &buflib_ops_locked);
340 if(handle < 0) {
341 splash(5*HZ, "Out of memory");
342 return;
343 }
344
345 unsigned char* loadbuffer = core_get_data(handle);
346 int rc = load_firmware(loadbuffer, BOOTFILE, max_size);
344 if(rc <= 0) { 347 if(rc <= 0) {
348 core_free(handle);
345 splash2(5*HZ, "Error loading Rockbox", loader_strerror(rc)); 349 splash2(5*HZ, "Error loading Rockbox", loader_strerror(rc));
346 return; 350 return;
347 } 351 }