From 1ca4d2132d10c93222bf8a9d78ef1436bc927fea Mon Sep 17 00:00:00 2001 From: Steven Mattera Date: Sun, 13 May 2018 09:06:30 -0400 Subject: [PATCH 1/7] Added 4.x support. --- ipl/pkg1.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/ipl/pkg1.c b/ipl/pkg1.c index b2b60cb..be00348 100644 --- a/ipl/pkg1.c +++ b/ipl/pkg1.c @@ -39,12 +39,22 @@ PATCHSET_DEF(_secmon_2_patchset, { 0xAC8 + 0xB3C, _NOP() }, //Version. { 0xAC8 + 0xB58, _NOP() } //Sections SHA2. ); + +PATCHSET_DEF(_secmon_5_patchset, + //Patch package2 decryption and signature/hash checks. + { 0x1218 + 0x6E68, _NOP() }, //Header signature. + { 0x1218 + 0x6E74, _NOP() }, //Version. + { 0x1218 + 0x6FE4, _NOP() }, //Sections SHA2. + { 0x1218 + 0x2DC, _NOP() } //Unknown. +); + PATCHSET_DEF(_secmon_6_patchset, - { 0x12b0 + 0x4d0, _NOP() }, - { 0x12b0 + 0x4dc, _NOP() }, - { 0x12b0 + 0x794, _NOP() }, - { 0x12b0 + 0xb30, _NOP() }//, - //{ 0x12b0 + 0xa18 , _NOP() } // BootConfig Retail Check + //Patch package2 decryption and signature/hash checks. + { 0x12B0 + 0x4D0, _NOP() }, //Header signature. + { 0x12B0 + 0x4DC, _NOP() }, //Version. + { 0x12B0 + 0x794, _NOP() }, //Sections SHA2. + { 0x12B0 + 0xB30, _NOP() } /*,*/ //Unknown. + //{ 0x12B0 + 0xA18 , _NOP() } // BootConfig Retail Check ); /* @@ -63,7 +73,7 @@ static const pkg1_id_t _pkg1_ids[] = { { "20170210155124", 0, 0x1900, 0x3FE0, { 0, 1, 2 }, 0x4002D000, _secmon_2_patchset }, //2.0.0 { "20170519101410", 1, 0x1A00, 0x3FE0, { 0, 1, 2 }, 0x4002D000, NULL }, //3.0.0 { "20170710161758", 2, 0x1A00, 0x3FE0, { 0, 1, 2 }, 0x4002D000, NULL }, //3.0.1 - { "20170921172629", 3, 0x1900, 0x3FE0, { 1, 2, 0 }, 0x4002B000, NULL }, //4.0.0 + { "20170921172629", 3, 0x1800, 0x3FE0, { 1, 2, 0 }, 0x4002B000, _secmon_5_patchset }, //4.0.0 { "20180220163747", 4, 0x1900, 0x3FE0, { 1, 2, 0 }, 0x4002B000, _secmon_6_patchset }, //5.0.0 { NULL, 0, 0, 0, 0 } //End. }; From ee3ff2170a7cf17b35138688f5a4ca96d8ba071a Mon Sep 17 00:00:00 2001 From: Steven Mattera Date: Sun, 13 May 2018 09:15:57 -0400 Subject: [PATCH 2/7] Removed unused code. --- ipl/hos.c | 60 ------- ipl/main.c | 469 ++--------------------------------------------------- 2 files changed, 18 insertions(+), 511 deletions(-) diff --git a/ipl/hos.c b/ipl/hos.c index 5c6454d..9a33805 100644 --- a/ipl/hos.c +++ b/ipl/hos.c @@ -265,42 +265,6 @@ out:; return res; } -static int _config_warmboot(launch_ctxt_t *ctxt, const char *value) -{ - FIL fp; - if (f_open(&fp, value, FA_READ) != FR_OK) - return 0; - ctxt->warmboot_size = f_size(&fp); - ctxt->warmboot = malloc(ctxt->warmboot_size); - f_read(&fp, ctxt->warmboot, ctxt->warmboot_size, NULL); - f_close(&fp); - return 1; -} - -static int _config_secmon(launch_ctxt_t *ctxt, const char *value) -{ - FIL fp; - if (f_open(&fp, value, FA_READ) != FR_OK) - return 0; - ctxt->secmon_size = f_size(&fp); - ctxt->secmon = malloc(ctxt->secmon_size); - f_read(&fp, ctxt->secmon, ctxt->secmon_size, NULL); - f_close(&fp); - return 1; -} - -static int _config_kernel(launch_ctxt_t *ctxt, const char *value) -{ - FIL fp; - if (f_open(&fp, value, FA_READ) != FR_OK) - return 0; - ctxt->kernel_size = f_size(&fp); - ctxt->kernel = malloc(ctxt->kernel_size); - f_read(&fp, ctxt->kernel, ctxt->kernel_size, NULL); - f_close(&fp); - return 1; -} - static int _config_kip1(launch_ctxt_t *ctxt, const char *value) { FIL fp; @@ -315,30 +279,6 @@ DPRINTF("loaded kip from SD (size %08X)\n", f_size(&fp)); return 1; } -typedef struct _cfg_handler_t -{ - const char *key; - int (*handler)(launch_ctxt_t *ctxt, const char *value); -} cfg_handler_t; - -static const cfg_handler_t _config_handlers[] = { - { "warmboot", _config_warmboot }, - { "secmon", _config_secmon }, - { "kernel", _config_kernel }, - { "kip1", _config_kip1 }, - { NULL, NULL }, -}; - -static int _config(launch_ctxt_t *ctxt, ini_sec_t *cfg) -{ - LIST_FOREACH_ENTRY(ini_kv_t, kv, &cfg->kvs, link) - for(u32 i = 0; _config_handlers[i].key; i++) - if (!strcmp(_config_handlers[i].key, kv->key) && - !_config_handlers[i].handler(ctxt, kv->val)) - return 0; - return 1; -} - int hos_launch() { launch_ctxt_t ctxt; diff --git a/ipl/main.c b/ipl/main.c index 047d8af..62947cf 100644 --- a/ipl/main.c +++ b/ipl/main.c @@ -30,35 +30,14 @@ #include "fuse.h" #include "util.h" #include "gfx.h" -#include "btn.h" -#include "tsec.h" -#include "kfuse.h" #include "max77620.h" -#include "max7762x.h" #include "gpio.h" #include "sdmmc.h" #include "ff.h" -#include "tui.h" #include "heap.h" -#include "list.h" -#include "nx_emmc.h" #include "se.h" #include "se_t210.h" #include "hos.h" -#include "pkg1.h" - -void panic(u32 val) -{ - //Set panic code. - PMC(APBDEV_PMC_SCRATCH200) = val; - //PMC(APBDEV_PMC_CRYPTO_OP) = 1; //Disable SE. - TMR(0x18C) = 0xC45A; - TMR(0x80) = 0xC0000000; - TMR(0x180) = 0x8019; - TMR(0x188) = 1; - while (1) - ; -} void config_oscillators() { @@ -239,99 +218,6 @@ void config_hw() //TODO: ugly. gfx_ctxt_t gfx_ctxt; gfx_con_t gfx_con; - -void print_fuseinfo() -{ - gfx_clear(&gfx_ctxt, 0xFF000000); - gfx_con_setpos(&gfx_con, 0, 0); - - gfx_printf(&gfx_con, "%k(Unlocked) fuse cache:\n\n%k", 0xFFFF9955, 0xFFFFFFFF); - gfx_hexdump(&gfx_con, 0x7000F900, (u8 *)0x7000F900, 0x2FC); - - sleep(100000); - btn_wait(); -} - -void print_kfuseinfo() -{ - gfx_clear(&gfx_ctxt, 0xFF000000); - gfx_con_setpos(&gfx_con, 0, 0); - - gfx_printf(&gfx_con, "%kKFuse contents:\n\n%k", 0xFFFF9955, 0xFFFFFFFF); - u32 buf[KFUSE_NUM_WORDS]; - if (!kfuse_read(buf)) - gfx_printf(&gfx_con, "%kCRC fail.\n", 0xFF0000FF); - else - gfx_hexdump(&gfx_con, 0, (u8 *)buf, KFUSE_NUM_WORDS * 4); - - sleep(100000); - btn_wait(); -} - -void print_tsec_key() -{ - gfx_clear(&gfx_ctxt, 0xFF000000); - gfx_con_setpos(&gfx_con, 0, 0); - - sdmmc_storage_t storage; - sdmmc_t sdmmc; - - sdmmc_storage_init_mmc(&storage, &sdmmc, SDMMC_4, SDMMC_BUS_WIDTH_8, 4); - - //Read package1. - u8 *pkg1 = (u8 *)malloc(0x40000); - sdmmc_storage_set_mmc_partition(&storage, 1); - sdmmc_storage_read(&storage, 0x100000 / NX_EMMC_BLOCKSIZE, 0x40000 / NX_EMMC_BLOCKSIZE, pkg1); - const pkg1_id_t *pkg1_id = pkg1_identify(pkg1); - if (!pkg1_id) - { - gfx_printf(&gfx_con, "%kCould not identify package 1 version to read TSEC firmware (= '%s').%k\n", 0xFF0000FF, (char *)pkg1 + 0x10, 0xFFFFFFFF); - goto out; - } - - for(u32 i = 1; i <= 3; i++) - { - u8 key[0x10]; - int res = tsec_query(key, i, pkg1 + pkg1_id->tsec_off); - - gfx_printf(&gfx_con, "%kTSEC key %d: %k", 0xFFFF9955, i, 0xFFFFFFFF); - if (res >= 0) - { - for (u32 i = 0; i < 0x10; i++) - gfx_printf(&gfx_con, "%02X", key[i]); - } - else - gfx_printf(&gfx_con, "%kERROR %X", 0xFF0000FF, res); - gfx_putc(&gfx_con, '\n'); - } - -out:; - free(pkg1); - sdmmc_storage_end(&storage); - sleep(100000); - btn_wait(); -} - -void reboot_normal() -{ - panic(0x21); //Bypass fuse programming in package1. -} - -void reboot_rcm() -{ - PMC(APBDEV_PMC_SCRATCH0) = 2; //Reboot into rcm. - PMC(0) |= 0x10; - while (1) - sleep(1); -} - -void power_off() -{ - //TODO: we should probably make sure all regulators are powered off properly. - i2c_send_byte(I2C_5, 0x3C, MAX77620_REG_ONOFFCNFG1, MAX77620_ONOFFCNFG1_PWR_OFF); -} - -//TODO: ugly. sdmmc_t sd_sdmmc; sdmmc_storage_t sd_storage; FATFS sd_fs; @@ -352,261 +238,30 @@ int sd_mount() return 0; } -void *sd_file_read(char *path) -{ - FIL fp; - if (f_open(&fp, path, FA_READ) != FR_OK) - return NULL; - - u32 size = f_size(&fp); - void *buf = malloc(size); - - u8 *ptr = buf; - while (size > 0) - { - u32 rsize = MIN(size, 512); - if (f_read(&fp, ptr, rsize, NULL) != FR_OK) - { - free(buf); - return NULL; - } - - ptr += rsize; - size -= rsize; - } - - f_close(&fp); - - return buf; -} - -int dump_emmc_part(char *sd_path, sdmmc_storage_t *storage, emmc_part_t *part) -{ - static const u32 FAT32_FILESIZE_LIMIT = 0xFFFFFFFF; - static const u32 MULTIPART_SPLIT_SIZE = (1u << 31); - - u32 totalSectors = part->lba_end - part->lba_start + 1; - char* outFilename = sd_path; - u32 sdPathLen = strlen(sd_path); - u32 numSplitParts = 0; - if ((sd_fs.fs_type != FS_EXFAT) && totalSectors > (FAT32_FILESIZE_LIMIT/NX_EMMC_BLOCKSIZE)) - { - static const u32 MULTIPART_SPLIT_SECTORS = MULTIPART_SPLIT_SIZE/NX_EMMC_BLOCKSIZE; - numSplitParts = (totalSectors+MULTIPART_SPLIT_SECTORS-1)/MULTIPART_SPLIT_SECTORS; - - outFilename = alloca(sdPathLen+4); - memcpy(outFilename, sd_path, sdPathLen); - outFilename[sdPathLen++] = '.'; - - outFilename[sdPathLen] = '0'; - if (numSplitParts >= 10) - { - outFilename[sdPathLen+1] = '0'; - outFilename[sdPathLen+2] = 0; - } - else - outFilename[sdPathLen+1] = 0; - } - - FIL fp; - if (f_open(&fp, outFilename, FA_CREATE_ALWAYS | FA_WRITE) != FR_OK) - return 0; - - static const u32 NUM_SECTORS_PER_ITER = 512; - u8 *buf = (u8 *)malloc(NX_EMMC_BLOCKSIZE * NUM_SECTORS_PER_ITER); - - u32 lba_curr = part->lba_start; - u32 bytesWritten = 0; - u32 currPartIdx = 0; - u32 prevPct=200; - while(totalSectors > 0) - { - if (numSplitParts != 0 && bytesWritten >= MULTIPART_SPLIT_SIZE) - { - f_close(&fp); - memset(&fp, 0, sizeof(fp)); - currPartIdx++; - - if (numSplitParts >= 10 && currPartIdx < 10) - { - outFilename[sdPathLen] = '0'; - itoa(currPartIdx, &outFilename[sdPathLen+1], 10); - } - else - itoa(currPartIdx, &outFilename[sdPathLen], 10); - - if (f_open(&fp, outFilename, FA_CREATE_ALWAYS | FA_WRITE) != FR_OK) - { - free(buf); - return 0; - } - bytesWritten = 0; - } - - int retryCount=0; - u32 num = MIN(totalSectors, NUM_SECTORS_PER_ITER); - while(!sdmmc_storage_read(storage, lba_curr, num, buf)) - { - gfx_printf(&gfx_con, "%kError reading %d blocks @ LBA %08X (try %d) %k\n", - 0xFF0000FF, num, lba_curr, ++retryCount, 0xFFFFFFFF); - - sleep(500000); - if (retryCount >= 3) - goto out; - } - f_write(&fp, buf, NX_EMMC_BLOCKSIZE * num, NULL); - u32 pct = (u64)((u64)(lba_curr - part->lba_start) * 100u) / (u64)(part->lba_end - part->lba_start); - if (pct != prevPct) - { - tui_pbar(&gfx_con, 0, gfx_con.y, pct); - prevPct = pct; - } - - lba_curr += num; - totalSectors -= num; - bytesWritten += num * NX_EMMC_BLOCKSIZE; - - //force a flush after a lot of data if not splitting - if (numSplitParts == 0 && bytesWritten >= MULTIPART_SPLIT_SIZE) - { - f_sync(&fp); - bytesWritten = 0; - } - } - tui_pbar(&gfx_con, 0, gfx_con.y, 100); - -out:; - free(buf); - f_close(&fp); - return 1; -} - -typedef enum -{ - DUMP_BOOT = 1, - DUMP_SYSTEM = 2, - DUMP_USER = 4, - DUMP_RAW = 8 -} dumpType_t; +void print_header() { + static const char switchblade[] = + " _____ _ __ __ ____ __ __ \n\n" + " / ___/ __(_) /______/ /_ / __ )/ /___ _____/ /__ \n\n" + " \\__ \\ | /| / / / __/ ___/ __ \\/ __ / / __ `/ __ / _ \'\n\n" + " ___/ / |/ |/ / / /_/ /__/ / / / /_/ / / /_/ / /_/ / __/\n\n" + "/____/|__/|__/_/\\__/\\___/_/ /_/_____/_/\\__,_/\\__,_/\\___/ \n\n" + " - v1.0 Wicked Fast Hekate Booter Payload (@StevenMattera & @shmadul)\n" + "Based on the awesome work of naehrwert, st4rk\n" + "Thanks to: derrek, nedwill, plutoo, shuffle2, smea, thexyz, yellows8\n" + "Greetings to: fincs, hexkyz, SciresM, Shiny Quagsire, WinterMute\n" + "Open source and free packages used:\n" + " - FatFs R0.13a (Copyright (C) 2017, ChaN)\n" + " - bcl-1.2.0 (Copyright (c) 2003-2006 Marcus Geelnard)\n\n"; -static void dump_emmc_selected(dumpType_t dumpType) -{ gfx_clear(&gfx_ctxt, 0xFF000000); gfx_con_setpos(&gfx_con, 0, 0); - if (!sd_mount()) - { - gfx_printf(&gfx_con, "%kFailed to mount SD card (make sure that it is inserted).%k\n", 0xFF0000FF, 0xFFFFFFFF); - goto out; - } - - sdmmc_storage_t storage; - sdmmc_t sdmmc; - if(!sdmmc_storage_init_mmc(&storage, &sdmmc, SDMMC_4, SDMMC_BUS_WIDTH_8, 4)) - { - gfx_printf(&gfx_con, "%kFailed to init eMMC.%k\n", 0xFF0000FF, 0xFFFFFFFF); - goto out; - } - - int i = 0; - if (dumpType & DUMP_BOOT) - { - static const u32 BOOT_PART_SIZE = 0x400000; - - emmc_part_t bootPart; - memset(&bootPart, 0, sizeof(bootPart)); - bootPart.lba_start = 0; - bootPart.lba_end = (BOOT_PART_SIZE/NX_EMMC_BLOCKSIZE)-1; - for (i=0; i<2; i++) - { - memcpy(bootPart.name, "BOOT", 4); - bootPart.name[4] = (u8)('0' + i); - bootPart.name[5] = 0; - - gfx_printf(&gfx_con, "%02d: %s (%08X-%08X)\n", i, - bootPart.name, bootPart.lba_start, bootPart.lba_end); - - sdmmc_storage_set_mmc_partition(&storage, i+1); - dump_emmc_part(bootPart.name, &storage, &bootPart); - gfx_putc(&gfx_con, '\n'); - } - } - - if ((dumpType & DUMP_SYSTEM) || (dumpType & DUMP_USER) || (dumpType & DUMP_RAW)) - { - sdmmc_storage_set_mmc_partition(&storage, 0); - - if ((dumpType & DUMP_SYSTEM) || (dumpType & DUMP_USER)) - { - LIST_INIT(gpt); - nx_emmc_gpt_parse(&gpt, &storage); - LIST_FOREACH_ENTRY(emmc_part_t, part, &gpt, link) - { - if ((dumpType & DUMP_USER) == 0 && !strcmp(part->name, "USER")) - continue; - if ((dumpType & DUMP_SYSTEM) == 0 && strcmp(part->name, "USER")) - continue; - - gfx_printf(&gfx_con, "%02d: %s (%08X-%08X)\n", i++, - part->name, part->lba_start, part->lba_end); - - dump_emmc_part(part->name, &storage, part); - gfx_putc(&gfx_con, '\n'); - } - } - - if (dumpType & DUMP_RAW) - { - static const u32 RAW_AREA_NUM_SECTORS = 0x3A3E000; - - emmc_part_t rawPart; - memset(&rawPart, 0, sizeof(rawPart)); - rawPart.lba_start = 0; - rawPart.lba_end = RAW_AREA_NUM_SECTORS-1; - strcpy(rawPart.name, "RawNand.bin"); - { - gfx_printf(&gfx_con, "%02d: %s (%08X-%08X)\n", i++, - rawPart.name, rawPart.lba_start, rawPart.lba_end); - - dump_emmc_part(rawPart.name, &storage, &rawPart); - gfx_putc(&gfx_con, '\n'); - } - } - } - - sdmmc_storage_end(&storage); - gfx_puts(&gfx_con, "Done.\n"); - -out:; - sleep(100000); - btn_wait(); + gfx_printf(&gfx_con, switchblade, 0xFFFFCC00, 0xFFFFFFFF, + 0xFFFFCC00, 0xFFCCFF00, 0xFFFFCC00, 0xFFFFFFFF); } -void dump_emmc_system() { dump_emmc_selected(DUMP_SYSTEM); } -void dump_emmc_user() { dump_emmc_selected(DUMP_USER); } -void dump_emmc_boot() { dump_emmc_selected(DUMP_BOOT); } -void dump_emmc_rawnand() { dump_emmc_selected(DUMP_RAW); } - void launch_firmware() { - ini_sec_t *cfg_sec = NULL; - LIST_INIT(ini_sections); - -static const char switchblade[] = - " _____ _ __ __ ____ __ __ \n\n" - " / ___/ __(_) /______/ /_ / __ )/ /___ _____/ /__ \n\n" - " \\__ \\ | /| / / / __/ ___/ __ \\/ __ / / __ `/ __ / _ \'\n\n" - " ___/ / |/ |/ / / /_/ /__/ / / / /_/ / / /_/ / /_/ / __/\n\n" - "/____/|__/|__/_/\\__/\\___/_/ /_/_____/_/\\__,_/\\__,_/\\___/ \n\n" - " - v1.0 Wicked Fast Hekate Booter Payload (@StevenMattera & @shmadul)\n\n"; - - gfx_clear(&gfx_ctxt, 0xFF000000); - gfx_con_setpos(&gfx_con, 0, 0); - - gfx_printf(&gfx_con, switchblade, 0xFFFFCC00, 0xFFFFFFFF, - 0xFFFFCC00, 0xFFCCFF00, 0xFFFFCC00, 0xFFFFFFFF); - sleep(1.25); - if (sd_mount()) { if (!hos_launch()) @@ -614,93 +269,8 @@ static const char switchblade[] = } else gfx_printf(&gfx_con, "%kFailed to mount SD card (make sure that it is inserted).%k\n", 0xFF0000FF, 0xFFFFFFFF); - - if (!cfg_sec) - gfx_printf(&gfx_con, "Using default launch configuration.\n"); - -out:; - sleep(200000); - btn_wait(); -} - -void about() -{ - static const char octopus[] = - "hekate (c) 2018 naehrwert, st4rk\n\n" - "Thanks to: %kderrek, nedwill, plutoo, shuffle2, smea, thexyz, yellows8%k\n\n" - "Greetings to: fincs, hexkyz, SciresM, Shiny Quagsire, WinterMute\n\n" - "Open source and free packages used:\n" - " - FatFs R0.13a (Copyright (C) 2017, ChaN)\n" - " - bcl-1.2.0 (Copyright (c) 2003-2006 Marcus Geelnard)\n\n" - " %k___\n" - " .-' `'.\n" - " / \\\n" - " | ;\n" - " | | ___.--,\n" - " _.._ |0) = (0) | _.---'`__.-( (_.\n" - " __.--'`_.. '.__.\\ '--. \\_.-' ,.--'` `\"\"`\n" - " ( ,.--'` ',__ /./; ;, '.__.'` __\n" - " _`) ) .---.__.' / | |\\ \\__..--\"\" \"\"\"--.,_\n" - " `---' .'.''-._.-'`_./ /\\ '. \\ _.--''````'''--._`-.__.'\n" - " | | .' _.-' | | \\ \\ '. `----`\n" - " \\ \\/ .' \\ \\ '. '-._)\n" - " \\/ / \\ \\ `=.__`'-.\n" - " / /\\ `) ) / / `\"\".`\\\n" - " , _.-'.'\\ \\ / / ( ( / /\n" - " `--'` ) ) .-'.' '.'. | (\n" - " (/` ( (` ) ) '-; %k[switchbrew]%k\n" - " ` '-; (-'%k"; - - gfx_clear(&gfx_ctxt, 0xFF000000); - gfx_con_setpos(&gfx_con, 0, 0); - - gfx_printf(&gfx_con, octopus, 0xFFFFCC00, 0xFFFFFFFF, - 0xFFFFCC00, 0xFFCCFF00, 0xFFFFCC00, 0xFFFFFFFF); - - sleep(1000000); - btn_wait(); } -ment_t ment_cinfo[] = { - MDEF_BACK(), - MDEF_HANDLER("Print fuse info", print_fuseinfo), - MDEF_HANDLER("Print kfuse info", print_kfuseinfo), - MDEF_HANDLER("Print TSEC keys", print_tsec_key), - MDEF_END() -}; -menu_t menu_cinfo = { - ment_cinfo, - "Console info", 0, 0 -}; - -ment_t ment_tools[] = { - MDEF_BACK(), - MDEF_HANDLER("Dump eMMC RawNand", dump_emmc_rawnand), - MDEF_HANDLER("Dump eMMC SYS", dump_emmc_system), - MDEF_HANDLER("Dump eMMC USER", dump_emmc_user), - MDEF_HANDLER("Dump eMMC BOOT", dump_emmc_boot), - MDEF_END() -}; -menu_t menu_tools = { - ment_tools, - "Tools", 0, 0 -}; - -ment_t ment_top[] = { - MDEF_HANDLER("Launch firmware", launch_firmware), - MDEF_MENU("Tools", &menu_tools), - MDEF_MENU("Console info", &menu_cinfo), - MDEF_HANDLER("Reboot (normal)", reboot_normal), - MDEF_HANDLER("Reboot (rcm)", reboot_rcm), - MDEF_HANDLER("Power off", power_off), - MDEF_HANDLER("About", about), - MDEF_END() -}; -menu_t menu_top = { - ment_top, - "hekate - ipl", 0, 0 -}; - extern void pivot_stack(u32 stack_top); void ipl_main() @@ -723,9 +293,6 @@ void ipl_main() gfx_clear(&gfx_ctxt, 0xFF000000); gfx_con_init(&gfx_con, &gfx_ctxt); - while (1) - launch_firmware(); - - while (1) - ; + print_header(); + launch_firmware(); } From 68b12a410b1bc13cf198414f1654735ed6c99bc4 Mon Sep 17 00:00:00 2001 From: Steven Mattera Date: Sun, 13 May 2018 08:29:55 -0400 Subject: [PATCH 3/7] Moved object files to build folder and artifacts to bin folder. Also added objects and binaries to the gitignore. --- .gitignore | 4 +++- Makefile | 13 +++++-------- build/bin/DELETE_ME | 0 3 files changed, 8 insertions(+), 9 deletions(-) create mode 100644 build/bin/DELETE_ME diff --git a/.gitignore b/.gitignore index 768c7ab..2976182 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ .vs .vscode -build_ipl/* +build/ipl +build/*.o +build/bin/*.elf diff --git a/Makefile b/Makefile index ede5553..d6f6381 100644 --- a/Makefile +++ b/Makefile @@ -7,12 +7,12 @@ LD = $(DEVKITARM)/bin/arm-none-eabi-ld OBJCOPY = $(DEVKITARM)/bin/arm-none-eabi-objcopy TARGET := ipl -BUILD := ipl +BUILD := build +BUILD_BINARY := build/bin SOURCEDIR := ipl OBJS = $(addprefix $(BUILD)/, \ start.o \ main.o \ - btn.o \ clock.o \ cluster.o \ fuse.o \ @@ -20,7 +20,6 @@ OBJS = $(addprefix $(BUILD)/, \ heap.o \ hos.o \ i2c.o \ - kfuse.o \ lz.o \ max7762x.o \ mc.o \ @@ -29,7 +28,6 @@ OBJS = $(addprefix $(BUILD)/, \ sdmmc_driver.o \ sdram.o \ sdram_lp0.o \ - tui.o \ util.o \ di.o \ gfx.o \ @@ -39,7 +37,6 @@ OBJS = $(addprefix $(BUILD)/, \ se.o \ tsec.o \ uart.o \ - ini.o \ ) OBJS += $(addprefix $(BUILD)/, diskio.o ff.o ffunicode.o) @@ -49,14 +46,14 @@ LDFLAGS = $(ARCH) -nostartfiles -lgcc -Wl,--nmagic,--gc-sections .PHONY: all clean -all: $(BUILD)/$(TARGET) +all: $(BUILD_BINARY)/$(TARGET) clean: @rm -rf $(OBJS) @rm -rf $(BUILD)/$(TARGET).elf - @rm -rf $(BUILD)/$(TARGET) + @rm -rf $(BUILD_BINARY)/$(TARGET) -$(BUILD)/$(TARGET): $(BUILD)/$(TARGET).elf +$(BUILD_BINARY)/$(TARGET): $(BUILD)/$(TARGET).elf $(OBJCOPY) -S -O binary $< $@ $(BUILD)/$(TARGET).elf: $(OBJS) diff --git a/build/bin/DELETE_ME b/build/bin/DELETE_ME new file mode 100644 index 0000000..e69de29 From 7d40ede71cc119c27753ae017ac4a8ea032363e9 Mon Sep 17 00:00:00 2001 From: Steven Mattera Date: Sun, 13 May 2018 08:30:20 -0400 Subject: [PATCH 4/7] Removed all object and binary files. --- ipl/btn.o | Bin 1172 -> 0 bytes ipl/clock.o | Bin 10996 -> 0 bytes ipl/cluster.o | Bin 2032 -> 0 bytes ipl/di.o | Bin 9396 -> 0 bytes ipl/diskio.o | Bin 1788 -> 0 bytes ipl/ff.o | Bin 24008 -> 0 bytes ipl/ffunicode.o | Bin 2916 -> 0 bytes ipl/fuse.o | Bin 1008 -> 0 bytes ipl/gfx.o | Bin 4832 -> 0 bytes ipl/gpio.o | Bin 2296 -> 0 bytes ipl/heap.o | Bin 2316 -> 0 bytes ipl/hos.o | Bin 7312 -> 0 bytes ipl/i2c.o | Bin 2856 -> 0 bytes ipl/ini.o | Bin 1868 -> 0 bytes ipl/ipl.elf | Bin 83956 -> 0 bytes ipl/kfuse.o | Bin 1032 -> 0 bytes ipl/lz.o | Bin 1148 -> 0 bytes ipl/main.o | Bin 16824 -> 0 bytes ipl/max7762x.o | Bin 3404 -> 0 bytes ipl/mc.o | Bin 2488 -> 0 bytes ipl/nx_emmc.o | Bin 2180 -> 0 bytes ipl/pinmux.o | Bin 1064 -> 0 bytes ipl/pkg1.o | Bin 2640 -> 0 bytes ipl/pkg2.o | Bin 3080 -> 0 bytes ipl/sdmmc.o | Bin 15232 -> 0 bytes ipl/sdmmc_driver.o | Bin 14120 -> 0 bytes ipl/sdram.o | Bin 9084 -> 0 bytes ipl/sdram_lp0.o | Bin 17580 -> 0 bytes 28 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 ipl/btn.o delete mode 100644 ipl/clock.o delete mode 100644 ipl/cluster.o delete mode 100644 ipl/di.o delete mode 100644 ipl/diskio.o delete mode 100644 ipl/ff.o delete mode 100644 ipl/ffunicode.o delete mode 100644 ipl/fuse.o delete mode 100644 ipl/gfx.o delete mode 100644 ipl/gpio.o delete mode 100644 ipl/heap.o delete mode 100644 ipl/hos.o delete mode 100644 ipl/i2c.o delete mode 100644 ipl/ini.o delete mode 100644 ipl/ipl.elf delete mode 100644 ipl/kfuse.o delete mode 100644 ipl/lz.o delete mode 100644 ipl/main.o delete mode 100644 ipl/max7762x.o delete mode 100644 ipl/mc.o delete mode 100644 ipl/nx_emmc.o delete mode 100644 ipl/pinmux.o delete mode 100644 ipl/pkg1.o delete mode 100644 ipl/pkg2.o delete mode 100644 ipl/sdmmc.o delete mode 100644 ipl/sdmmc_driver.o delete mode 100644 ipl/sdram.o delete mode 100644 ipl/sdram_lp0.o diff --git a/ipl/btn.o b/ipl/btn.o deleted file mode 100644 index cbdac1a8344be860cf769f3838acd9d7311e2117..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1172 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 SD83sRE`&EDG4w@=!u=O0e^xaB diff --git a/ipl/cluster.o b/ipl/cluster.o deleted file mode 100644 index b882f880837d3266cfe632ebb43fc924e8dedd09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2032 zcma)6&u`mw6n|gm2Wd0fG-lAoUF*crmUhLYBd8VZ;3lFKNromgiAf;k>p0dNt!<*j zE$fLKI1DBvKpYAOE}W1!QgP{_;xAYwZd^D-;=*Opv|Xl!_Z-`Cq9OQ7&!6|>^L_7q zzkc?o?^d@NW8f_YIT%?0#}OwIDL9aWS(t&uiI%yZ4$Fh5&j)fg1V5Ifs5CS3O)2mA zaRr2om^`c&lkn>-sME~5E7M?b*-2J43Gah+urO$`*RT>kI2%SWzlM%JSc5c zMIHg#tymv{_a~|ysC*Mi@p-J+cJA+N`?wAK zPY!(E1TMU<^-!RXHlp^60UQQ{WsWGL@BV#|vxr&)b@XYt7ajr6{|3B(0w}l9e+%QY zu)GC3rPAASu3;YDZQ5HO+>krwuBmrTxv;S!Z>Z~P9=29+UUXBhH-Rmq8Y$d@s1RdQ zEE#@ zz)gQo)YnJ}L2QB_bNGFq74x+re|o}>!yJ0(jCGVGgyBknkwE>e3A=>hM&v!fc2wISPpn(L^U`+9xXthHO8m>p%*NpZ-9z8ANu17ao9kbiKW7*gtz%(9o zkq|E<=OX=M$ktq}x_H|~l@Pz-qKkA_)3X4VUHcy4MSw2|lK|hk_=Ag}c8~UKy^d&i zhG==3ZQip%ZRoZRYQ5V96=zx{r|KVl?6O`Ef8o`Pc;20lu17Umdwb?S*2RxV)or`e ztRL8B7u)^cOF|~ihBu|d|MX}(#b~8bNcX;uf8)_C();-@Uf#_YtV{FkEx}dR5T{Ty z*S7KV+eG~W3Vn$rRPQEA@Epfz)4Y3&c(iCHg86>N0L=mAqh7pxGz-CekI~l1;Vv(q zjdn2KDF*0ll#lxI@_mImZKoKm0v=Eqs?L*QB;TRn-L)MjK0ZX=s%Id2Ef9KlMB&fS p;OKlAbsTA@ZUT{d^WFuj&_{!M@s^j5{wYD;-`Mz19tqLo{R1!3OMn0X diff --git a/ipl/di.o b/ipl/di.o deleted file mode 100644 index ee8712b3f6fc1ed6a7d961bc9b34e79b719dd56c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9396 zcmeHMU2Ggz6+W}GYp*wMvWe})cG7e_YZ5nhoVDZTr%l^UoFA{(PSVu0QCi{g&${ap zC&qS514tO?Lxd0tr4JEE5Vb{$qCS+LK#)?fRDp_wP+BM|LP(W>mzIZAAW@{K=KJp4 zyE{9ZZ4k{15+}a%-E+=&&%JZ!+&gzRUpz2$(6THsVo8UTG?B);lqc4wphMavCGlMH z@`i%bTsu_PvZ3(ozQ~*P1$W=S-iSHN|NL+{dDXfqhmuFd6G@MJa5?2(OYLckDqmgd ze%I7zax;Ss9?Mc{X7I6CgLe}3MfYUxxk#&*NG-NK3H`~zI(s#)@T8^({|MGJ>dBP7 zsgO++zSW=bp3pd@F|Tn_v4{80d)(_{74DM-b^$rijUHXSr`{CU1;Q9jYxik7k zr<=>}QP#+&!Q9|Lr?*K(%H~*$wht&@lY1!Jt7^7;Als#C`*R6*gSTI6ZOT^T?#=F1 zHCHm(O{$i3AJjcGEB!O>p6s2f_JMk?B9>J@AzlYc6vaV#c3ixZQ{oLwLI+;?tIRH; zT3+vntIz<_^Uf@i9H(y(@A9`4o-B zkfG_3A(WlA$hm8_)I>%0KwsgAT+c@2Y=aC`)8h7oJsDu4`bUdU8?M@55@pd)QTs&cYA-JH5Mf{YBI_ zsJfeTk@+l3DOatRHq_f-#VFi1j0Jk(MPzK!b#g6*M8Az(YAt-Vzp;OVH>;lB(m~Gi zE-O6}>ku`MFQw(ESe%EzTww0_Y>dQ`BAoA|uYrZ<#vF*_xp$!mN;~U_xyo8)b%Doc z%4eRuyeb=&xVut~Us88qyv35+;92d^3Mq`ZUNKf+b~#pm2U$Ak_m6RPqwGL=z!^E$ z;EY5u-YaMEjL}c>vg5|Hb*g<_U9HrTQ>)gl)L<^IMy|#Wm13E8It?=1*Q^WafgL~x zWhcs|#8z1el!zm%G`3I$qg7*!c1Vp6QmZkpu})(`Bc@OZQc(%xP&W7=cWNYH|J{<& z`aYm)t2;3IO4DJ;Zv3k;uhHS*)Q>S^c$XM2XVvWFnSt$4xjZlAf*;_2(jvXl)q@Z zXnileNG2k4isNQ~YcapeXlLdxsAmHH9@HtOof(H|7t}K(>gN{GXeb2Z~O@pmbf-!H4XwceqzY<>gd4EIO+M~#R35GCAh zg>RN48utLLn%bKCfw7f|=mWqy1bz_Mm}rsxz~yCe4gkf;*B&H7n0vO9RJq4{WLyka z)}Uli@ak03sL||G+{boff`~s|{>t;@MNpKz&BwP|T3V$qu*>_GvgrMj(yGH0RF#^a~9Nd$gra4!>o6+Z~d?C<6IY%dLQHt zjp`hO`g*O0&l?-HeY?h##!qP6tPw|NC7l|v1eLUF+@#U$hg-DXrLkKhbDA>bgRBNN zqj3Lu2kXb|KW5+I`HXUp4`TL5p3^8FcR$SeVT${p*$;^ngCEsTbJcyfzu{KyS%(i1bkd9i{JEW zq)gw9ee@RnmGQ&#(Da9zGJo;?6}ZojdaiS!=bA~F_vyA1=DBjc#3Pd7I*Hqo>D0*e zL!Ij;-g)1HTY$fgh;ZFd=X#*-=l5?^e!pPN#+l#eunw5tL`;Da@~ov~*>{TE*sAW2 z1hcNVo@!9cdNTP%e{VXe;&H79bsUS7o%h1ENWst`@Be)*t{6tqPJa@XbwHkN&HNpu z4tWS=J32U~w95UK?>&b;z5h~IW7oPquR1n#wTEfD;YYPzt1+&z2AEkPu{!EF-o$|F zyh^=ZY9d6)3Le@iJ}%X0J#OrpXU1Xry@j6XMMwu_FAC>{$axLl-_7nn175fv6HgBH z_uuPuOy-~d^z_2sW5do|{$ze^KJWDHyxZB?-P4_xz09$({Mh)kSp2mv);EItjazlr znrNfdWUaHCtrn}*+Nh5%?5!wPvBvZ7`}h+-p)NFN!C6kQ^%ss~Bz8`^Z z^2ujK)qBXiGyD^`@8K1{xT)w93XMq-0-FLOVsPqQ; zf!1G9dZX5Su(7+9$4{vEnIen3UrB5vayh?V@jHr?dijN^tNRcBs=)hMsrZJ1uWI>| zR+t->|EovQZDUt3=LX-nO5W982WS;{C*NpeKFj%PW$PB~e|5;u-Kr!u=C8c{nvxSW z8@pY(-<%eFnk|hXe|Wx|LjI;u{IwxJcfXR@*!9Z$SG!=5VB_hO`^%q}EiEB`3x3n| zg-i?npxF4esXSh*tki4asN$PblHbY(yPUsX9L?uCu|i%Ozdn`oH%PDMJBn{kizfb^ zA$~Z&HirBgWxtM>QSr>`HSxGzmBbcDPG~-@%pMOqO;@nq*I<8`3Hd)C(x26Q_PYk_ zm+w$gCQ;U4y?syXyOdrJ$8`6Ej80C^&z>ARGdejxJ^I=)W-(<-?ar)HM^b@1K z6_)K4mc9zhJr$Oobfu}M(p1@9Pi22SeKIliMDY%$=Ei37<4;XZ<>yKPpAIVeUMl3 z`H4{sy~u&5SXVJd=O^a!`BOzBgNz1mP}J|Si9!FIn7~H`S1j=Y5%!lg{+>82@{UIC zW7Mw`!TV5SGx8&Wmsp3!T^b)Cf;U1$yK$}0YW$qGGymv+P9uM7WxE%&{<6j&YrLxc zztnmfc^+{^b`iJXOhfDu`2rEkWs!*U)$>Gr6rCsHuy}!ZugFWp`*GjIjL0iQ97cac z+>A3I?-S$W??=RaMBbOyxlX7*t?|nmzpn8gzz7Z;9}scajbhv!SDd&NZOKF2F3r!7 zcfdbx(a!Ht#^*aL(vM5`{F#}Bv2ozSoR0-lTgX4NAl;K=3uDqfK0hzrIQw+d*j>!_ z;(9Il$}+Cf%p|L{mZe*zyCU&8p3*3|yt?O3bEG9>ahX;1q^mdTsqX5n?%H16)mPP3 zJzn*2)uY{0wVxeTJv*yqVWB>R!twF!PVrFqzBOXv4ZskL_d4QnpJY6?HSs1;55{Z84e@%3;kk&oJcOuNgXHmwGfQI*s=9w{F z0528bF*M7Uz(X3%8rN&!Z83`GP$d`CqFe_ri5zrc8AM^fNffT3Kw9EIh(vxCxDQjs Qw3hJ}vEIHB=)my)4gG9{6aWAK diff --git a/ipl/diskio.o b/ipl/diskio.o deleted file mode 100644 index 7626cab02530b5671345a4aad9be386b267fdc24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1788 zcma)5y-yTT5dZD%eILkiA|M!DJ`xWx8%T&4V<86u21tmZAkpNqcelz0j=S7GRA`Ka zwZsZz>`kocDEtE~XzA=MjD?}F^PJhY?`~N&I?3Ca-^_34WB1MTyUX*Mra_5@JlY6Y zi+YjRl&A9OMiwyY3)#cwkDtx#QRFDOP(QqcuBA?NEq3EwA$c;6VQ_S|us&1w7zZQ6 z7>u(|hh|{>^!Q+?6iLPN9uLOXFU@B26_?;#nWbK2R^AlSCmBpqKfh%&N)dS34n_v! z-&*f-Us#x(y=CMp_LEIV%-mlw8upfLxwbJiJ!VXslja0w#;A^ETO|kD6*6N}YlugZ zT1v}Bd$bE$pWd%s)CRQ6a&+#hEx~US#rI}A0?=$hNH`M0dI(36KI1uCQAaEkkDX!b zNQB}EbP{8(#Y(g+Hgu#y{FKL+|CSjkezZhKCdALQVr=N>2;ok?9o|>qNpgt7@G&!U zG|zP(FMBwF8>E%+yZ00z&3HA09}woRe49>=`h66N@A+|ApZcvh?xs^S%NP|Ht$48L zY&*iSwwyg%VpmvV$CY-&wkmKd)oQuuidw^ZY!^LO)vlK7yA)AwNq^dKgdO5b9~Uk< zwX)da7WpQm&jUTIdqKBaYMvwA2P~3~^aB(^dH}fQ`)~SwnC@;>SS8Y;A@zo`g#Apw ztXRT=S#n*N>@a2h_M|3lLLlPL9P)ajhJ13Iz^ig7vs|lI?QN<|Yi3$PG@R0ouw82S zKV^`3{4e7^zkLs-Lv7QL&r{p;H{Mm^CF%T&r|w{|ZgBI|*3SEN6_5W#2OTAfS0D#( z&K*CnK@D&p=jiapa&E>C=>+GUBg}iCMD?&vj$pnzd|^yGW3 vggGp%Rc^)xIX=?qBAZsm>n}^1d!>9W`AjdpY$2J4VK<#1?>&JJf8hNB4^-6J diff --git a/ipl/ff.o b/ipl/ff.o deleted file mode 100644 index 6e197352be4868a27221edc47de5eb392a59c1ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24008 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 diff --git a/ipl/ffunicode.o b/ipl/ffunicode.o deleted file mode 100644 index cb2d2fb95b6779e8fdbca2c1d0a33bba5b961e9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2916 zcma)83wTt;75>l6-OVOMxHkg)>m~0Sg zYl5a2sX`Dwr3GsQ3q>g}r68m>JXBuRr1lZ;QCe%azFJ5i1jKC5?B*s*KKr%jeCM9W z{B!2a+?lzze)5bdL2-F!Lj{lzzhe7%ija)J!XwSJEo#p(p4`TFrcmSVL>+DRPUasfBqR^RvtwXe09` zdXAo_&CFY9EAw{RK`$`xWZp%)nfK6MYGrkJv62F!M69AR5ftTOu6UB?^*vGInkR*hG!u$6|?iSZtw5LeFuscuXu4%SE$TA$HOIQsOh& zCnIvRG_XWA$w%Z;xm}Ks`=!8oxn3TW4tb1GkIH3ox$Kmw)FqQ}UUthf@~rHU=a|pS z3(V<;TNWD5ggM4IT55cS_8G(J4TI2Tv>THsV4Gk7Kl&n})Q7Yus3on4pd5CmvfJIP z(^+!azC$J8ZZ%VVTg_6l)m^Gs&Eb}6H5_}?UUf(vR!7uPbwa(RdewRLq54Q&P@k#> z#x%3EuxwKXcB_}v4%MoTDZ&BOu7v$0%lqtoth)JmQQhVtWO}MSPSMELL!S2WE?c_q z%f=j^pt(Lf)v<2yl@YF+;K+-(_*A`yi}(P4!{2cd?<0&4@e%%sf8$^H7zgnR4&xtq z6=%?cE_{mfh~Q6n8@*VMPW%~<(_irkx^V%g(Shf%2fxJ@Y{qZUif8aV_F{$kxVh34 z=6G`-_M;7(P-@;`e$$+7uEQ_jG)J1*rq3K}!o1mh4+l_W&N3^^a&wMZXwEaA#VNGo z2#(?qGU#>u4sRgUOg5X$Msov>p}~9;f59K{dz{4|u@ilG7box*j^i`DgROWGzruEm za=(mUV1n-FA zZyrF!{72*b(fxK;bo?Y-)$g~mCJY-uYJUf&!0eP7hKV`9JG67?OpowY^!U7)rWLKN_g{tbRtAjNtE}lET zt~hj0U1do|aVhW0;<|e)^e{76#FgMLbxi9zlX!2g(tZlCTI-Sg@YgP?3^7lz<33xopjm(Gx&r+}JqPxG+|`WHzdQd6 zm)@T*eq6n0EV6C_y>Aj(a{C)zOo-*zzYH3qMUSWVZ2UYL+1Gt7vhw9|AU%6AtB;`1Hke5oAM_365-eDm1W`K%kNkR5%-EwbVda3CI+&kL!~ zzC{+UnFH~-KE2?dlkeyKVZGj(`naI0VrKNIyJ*?S!YQhwL4J5_z_pgc+DfgpRfBGx o!8jdovKq^x=c{eKCb}exX7IWMEr+$0Zv@-%xVIU%>vM4b0e%tuZ~y=R diff --git a/ipl/fuse.o b/ipl/fuse.o deleted file mode 100644 index 4ddb7799969978f3ba79a357d6e396511ea44d39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1008 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 diff --git a/ipl/gpio.o b/ipl/gpio.o deleted file mode 100644 index 712ee3c61ce7343aef99250447d462fe9d517166..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2296 zcmb_e&5zqu5TEzqXLrf&dbh6XW~1T?OSn~J8Oc&36rn5&UBt%)dP0b7l69M?-6Tr9 zP)N5|^G(Z~OrqICJC#Gq&HZ{nQm480q=V$1lG(9?!hpFW-Lu z4r2_oFo@vX0(fE-5i2dW2(Ew!_Im^PGH5W{pO&3^w%E+ z^f?^;-#A&EE8qRj_ovQa|N7(o<)JpC=*}J<%75Ol42@Wn!gP&+1!=N>xww zRbr=h&vvmUK6Jok9`jj;x!mJE?{HUm!WSLkN>BQ-BVEh0e5+%*%2U4TDA)FE-wq(e zns*^!A&Xd-1w7;t@A5!|A`)E@$WTVID+4REBCBf!DpZl`s=yBI$cDp%gV%%TIQ#6u zEZ_g|gJ6|C%tq@hNN?W^ZpW|13GCm*B8{@qcn0icRIT(bDDJRJY*%{h3cD(Nc8#^! zby*a%`Kb4Tgg^hTM@6Gk00i)Q7;RzL^o{Bw;UzSKGgmVM0m{HD1Fz10Ns2&plixA$ z&8UD41HVz=y))L0Gp*!r74dUt3$`lb4cr;^UrhvT8u(4@lTu3jW(`gGZyES4xY5At z(@Lj+Z3Djzw;K3ugWomm9qfC`8?XZbc5#LV4O_uS4cmcFE4zdHF4hn3FK3H*0$~o} zF$~EXPUiP2Z8oozMW&V0y!gp*vY6kS-7odUX}&zohuM5IewdZ6&sVd&QdimNxabkS zQ}znKTJ3GX$phf@h}U17ze77IaX2UWuj$E7EjeWef*aD4r}%PO>>FIMVSb&sVeYX`Zd|J^!QZA&$PQ zo)G%Zb)gu^4P2z_Nxca7Dq?7Q{tcH@eD!mwx3uU9@1o-pu0a*}9s|U`i;FO{$i9QC z{vMy8{UW|M(O>6#QsbjsG~dMF`}zXDp~3f4jgRuue2)yiAJL}S&_Xzp99KQRr!_vh zWi;Po)aiZoP5KOVx+}D3|F`I<;}jY%!u??2-nszyvw{2S0^F|^j=nR=Q^dVes>Kt{ zBCp?Y$6i_L(C-+~cN6&tM?$-PC$e2M5?q&2r$1Iy7rM2mcDnaag#iYpq*S8$@QP^Q No*}OMhol5*+&^ug-TeRn diff --git a/ipl/heap.o b/ipl/heap.o deleted file mode 100644 index c7de54bc7a3b370d1faddb5a5194de2f595baaf2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2316 zcma)6&u<$=6n^8i+r&xmCM1nx)Z#Qjq-|I^Ca5i^wh471Af*VYX)c+KvtY9&tLfGTm|AK-wLTO_K&8O5a%YSlx95IuuHa3cNQ>`r#FZB?E$em}l9-^_bE zexJVe?pYxOX%RF*iANOX6q1`(YJ!I80MVFzvPUAZ6Vxo9j@g~h@!Pju^66;4bKAc! z&-fR8yLzLzC~qT1+Z*zh|NEoDSfTROOomEt&-s;2yGqA;J7PTV56XGDA%B+dNV{s& zfrm6Xygfz-{Rck1_HXB+f8)&Gce+bAi}uO$Qj9Lh5o8a^yYjxYUoTQ+E3?&ATl8-h z`$@cFPYt>A?uL8Uy(i1nUmmGzAI{7b<)RE~x6ZO}Z|?l_-;TW{wy36U<_I=>X?CVe zjOOSt(I{IJ6sQw;Uv^H=f}iY;_^38B^JaNs#k>4*BRu{7d*zn5>bY&NJbnB~`M5LX zROs{(oa=h-a)ZRnFmux%(7sHU=oSOnK`|tTt)dtaC2=Ur7fgxyJ+k!2jtN_Pz7~;1 z854$YrTi>)A;O#|uridT(w>aHH?Sy|!gF*m-hV~y&(Ryu;Vwt?V6RdkG z#>xQa{k?hvd{ZpyPVMhDVN}*tyWP@lWU?;$_-4=KEl)}gg<&n{!}{vy@@;eNj722P!pST9{_ zd7jf~w_H5C@h}d$tE=mEr@p?{4ujTu;7rl@N(|Loo*Q}wR*e9~y3|-}gw#~qsUE4O z*KB(s@j20V&x}O1u;$m7e<9X+Qg1B}&0WZk#{NDc?l0$))4tja-DT*o6=`2vp?4)D zXT=R&a+cd|ayZ~TS*3&jn~6PHY&zp9H76;mi>mG<7Iz>C#JxxYsvUgI=z@fXHk;lW z3cy5g+%Rl4mOlx-HcI}#@)8pHJEL7nq8S`JP>ivlt;*K_^k?P0iadU!&&!*P`OI^9 zR%p=^<{Sd%{Z`@gOwghy$t(i=uRRq5rvUIh_zm#1;5_y}!ZP`OgU|0>3+J(1!ZP{J z8GJlFG~XAnO}@Y2CvzrxqX^M;ER%2E;N!UF`v$hj$IjFEzE1Hi7<@dPG~ahAzFzS0 ze_o63^S20?_md#tzHt9|nrXftV4L@wgu^pJ3+J(Xk7e=&1|Ls5&G!>*^S#W1k9{qg z?;ZktZY2gdZ%ik}7~{WU;q3()`VhgR+JWXA7S_6U_P<1+g1``L?hl{K^>YpSEyJWA X;ap=Q7R|>K+06S41b^xzXr1>MO&1W0 diff --git a/ipl/hos.o b/ipl/hos.o deleted file mode 100644 index 0a3bb9a68884207f674479268ce187c0999c4899..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7312 zcma)B4RBP|6+Um@ZW5Ld*61keW`}h^ts0Ciy}SW9r{HK|c6LW` zI~|vFkuyl1bJmSs5k2hUBZ984m_QY4y(?*_lum9BJCmkSrvpm}T%M&uH`ncfA~r^s zXK{{K?B;n>pWL_D#B&MW0(TLM=7D0-;#@vwH=5SRSSPczdoP~)#Yx!%qlL$9jfJp~ z?I6bqaPyV|3y(V<3I}QatGZTn@Tdw@c8~_D>~ONBVba(o1pp(GSMj(-oI3cjZYt6f zDUEJz?rHXejqmxRi$ok-cEOfx*)7iR*y>SSj3vzf4EFR6{aiU&sItPxMDa`MBCbnEl&b92h z)-lhrt#3NYgI}Gu?VT6dz2x4>7o)e7ZI2YyEe?Km-W}n)=!uBE>F4Jqw&HJ`2W6hv zG4u`4UZFA{>uPFD!tgaHcD@IxJt%L-dI&4P@bSYWCgtW!K4|_Dt33t5SW*pZVPzni zQu@-#xYDypsn(;nYf7bm-L92Rs2pfb4#vVtBAHR5VJ(q~_6;d1H8i01Yf7!MPfP33 zWJ0OFMp;p*uUP4;9B@Jh=S4BDVAd+t%)Ck&(1vjfdvyi`kE)%RHS`46}6zp zxfIibz0@jd0_TaR?}UCWp{3OfO`SHRJ0Yxv(nBf2L>o-dz!8w66GW8T)O5Tznaucl zqX|aSwNN~na6(#B8MQ7q7tur%{nA?RU^JGYC}{fPzP*nQ!I_Sa-t0Qm|FTT(QH)x%UDo<-C^-VOx&N z?Xm^ip%66`6Hjww+u@2lMt=7)I4pJt`<}?Zg!w!2yk(4l6H&z?k$-fyZFEooYMFy9}-^KgO z?L#eCO--?!ik z7JSKq+2RTv#Vg9K6`#Z97JQur@37#Y1*a|eE(?CZf*-Zu$1V8R7W}#e|H*>=rXz*M z_o2m(n>ts>UTVP=7JRh@UyqnV7Nac1UDs`~-)zBQ3r<<^K?{Dsf{$77vljfk1w$mM z`$7X`suJ{hRUaG<7AS|SXAP%_aM?GLcqu>vvOSpm9>19Znh0Ixy369d@Fv(!OA z*8;I*XaMj+93q;oY2iE&NNBe~D6WQbR%ER+19~zTSckYN5cZZ)qp`2kv9NuCB<2tJ zl)xOIk0l5FeftBcbTpCaLro}_)HSBUA%Y&JA?cZ98Xq`pCIYCisC6wv+5kRWGSLja ze=K&I0eYF#28<_@g+Mck(?a7=L!m$@la4_KUju>f4r=KkGO3!*%-9vgwRk9%)3SF) z0B0mL5YR%s26-@XTUt$#kD;OHA-ti}hJt%yXOP&>m##mRp+VsI4Gj$`&=VxcR44?EWYJE5IxfqqE?Nk7ST{7!PN2iQz_ z1HZ4Fcs)iC+mIY1*+}0g+VRI1oz&!CK@uO<^lt;sYXQ&|oYw)|L=xkDn`AS;{|WCW zjDB=45Pu9M#eI~d7vKpY>1HJ!-C!h_k=zJSB_zwc1)!a9E57SVZUP9BydGdLNgNF8 z5B1*{de$%MA0pfaaEv6{>7F6K=LDW0iM+EUv6J^mVm}`Wc}Yk+9$w_{B8mRx0#}ek zf1kkX1a1+yQ{bBfrgNY8dj+O*pT>JY=;_>db^zQXB)ws5J{$*0d|i%_#7Uv^-?jqB zMY0m-lVlyhILTEr>qj>wty?uoeB>a7truIrt-#(rH1B&z-znA)`@dcAMudErB=VjT zyk|*v0X$E#nZK22eP2gxtDv7@T)rjbJ3``CW8+;&a+_Fhl*NR*McxHs-^~&G7bVLd zA6@H+hx-dt1t&gh*nU79BfMSYy#wGb!DH)>>-IEZlx*FRf12=Oo;SsNgK!VPpGjiS z_er9@6z9`5Jo;*cO1uN!uTxNMe-*6zDV8-z}6cjTW^$i z3q8GCox5;81wMn)R)g~?1i_M6RhR&(B+ZGJpCnE;l{@$ksPUw8kTw+cDde(_ky6`N=^p)~X8Tr0`3@S72BJQDJF?TAw*o?W!@ zD1up7n*}bzGl#hJYo7Wi9_1g!YVMcL!EvlcG2&^cFvkmGya?(j9>p=@eGl8_ctHeo zCK$ztcLyrW@y=j8I%6mvovlW^N3d;n^Zwa1}y0?($ zWe|x+Ws`+he;MAb7GCRRcyy0YY$LxOBN|5ePe*i#O?&$yk diff --git a/ipl/i2c.o b/ipl/i2c.o deleted file mode 100644 index a78b851bd0a9739cf2c7cd8f894d5e80d67719fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2856 zcma)7O=w(I6h3#}WHOn?$t0QD$zS`Lm&8e|kJJQ zUSk462NdkWmDN>TMAC(df}4RZB1EXT%`6J7AQU4gLP1^FETrQ(_q{uF=Rwf}XYTpV zIrqEwo_Fq@>o2{s$QT154C2s20I^OU>6qn190p+k#ZW!PaO ziSe|`xvJV|VF&sXTDq#e2|pJH=l`icC_-mqJ~g+w@7oV99W2sz8jZ$vs}_cn;Ga_N zgX+Zkm#gr8>J4C8e6rd>gP;(IdxQE{mAr}|L=clpJ%yHlp#{Z*_JNm{ik z+)4E$kJdEkSq{$p__hkw2|7_|`~`O6WwQ1*unKjj3L4y)87i=wdmDRemRk|P+ID~f zU7)@O@TeC2GypvSs&ekBdjqh($iAL3QzN6i3c2AacoCfHKIW%Bu0>%4Xa>^)UrvH^ z8i;osJ_{G&yo--{?wQ&!^l0k~!zLSpk7;lIZz67_XRNev0^lQd*5}Sqw?q^Uz=S)f z-=qG3dWc#_T}mV_s`0$Bxn8vAuDq&NjFOSD40ZOxqAt0T{*cttLmHX_28o&@(>>dE$MZc$Dw2<&46N3t~7jUcFXS!5b=z z0#Cyw$w8|pJa`!~)o%s059{-~i>Ep6hBX(T<2Vf4E*|7K0w1{eG{?CA;`2E@2dg-& zzLP21FlIZzGB)z7<~lm^j-z7aHo1dRGx>bQ0;^;gCX|hG&fF%V)#3&+kilnXudS_G zU3`AK%gNfd4Jm;T3Y|Tq(iw3)3qbE|2-}N#%{K&i{~eri<7wAVb*4P(E1FNe zLiu!l;+dck+lKSv$n&rbs1rh(yY3hQ-P$hOnJkWW#Tg62vW+bp^nAw7fS$E1(DBae z&xo7tL3t>fycx* zP0!eNrI@{D8x|Jk{|T0y_bGk~F3$g?3vi$wCc#g_ZShh)DeoD~qu1fT@~AI}TV9vG zxe%Xg(EaE_z3k#@hr@pgvENl%kNQXEqyEdI3ZYz*%cwHn4dkOHg$E%U_@tOznUkD!Sv^WB#C=oJ-w;(ZYHdl&hrrb0yh-b07X zcZhru^wD|g)fIfV(3bc26#}Zg5W%;L4w>(P#7B2i@O_82%y$m~-EAR)?^|@pe19Mx z)s6N?`xJcl(U$rCLO^e$5W#mB9Wvjs#7A$5;CqNR@rij6G^h`RP#y{WkyDctzT{<_NLEIrU;WrF?LWV2ELqh-i Oavn8tOaw6|%zps^*oJ`s diff --git a/ipl/ini.o b/ipl/ini.o deleted file mode 100644 index 6482eac8ba134bcb82c29c400c456dfe9d19ee7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1868 zcma)6U1%It6#nk)>~@<*tudin+r~+g=q6i-tVXIuA=$JhXcepxDox4E?v7@4lMK64 zX&*!hq6i8~qz?wg2ZfrHzEwf;=9~DiEBGM37WA=#KMzXR@67D%&JKzmxO2{T&Ueo} z_ug~owNs}bS4trig)F)V_*M5K$!T9@aR+V(tQpIlPps^-5-SVV^OhoVuP4#^<5o*e z$ydjOj|{lG+HQItxOsiy^k*mcKpowdbn<4fyYZ`qA6e14^DiCl%ju2Ba#~{umkYl&!Fu)^&pszBrV#8*J*4eSSwCmQ zmxpVm^TrXezxwIZKU=LOIq&(oxf4dV?7Z@F#hX3zlu>i4j$L<*>Ejc|aWijDVRnKv z+p&uksC#H8rx%gZ(rT|7&I7&cdTw8^77Y_8 zVpzu>dL(CxLxYYxdlJKvS)UJS$p%PV6^$eK3`VtN&@K^Kh2H? z#yXo$cgeI8=!@Zf$VEK+X+IFdkHqi{v7|r7&j8ndA{KuphR?<@Dr*(9gleVkEz|Tc z<^{lZU1zO~<+@iZUvM#22Cb^IhE=;-T`vhLxtC=6vTN7s4qjMZ=M1VB9j{JRs;<*3 zH_&$%hiD%5faoEhU-SXsUeOuWFPglfXp%QXlmCwB+knfWdEC3A4+7tcChwML@>1Nt z@CMp?ShOr^)-SDkc9Ghv1$rg4Jm;bZvut}d%woL`QygaZC?dFh8YW*u;0@2E>*=0^ zSz2FRb=H`h56HAVuU08u@SHlU`QLJgOm4yNYne1HpNL3IWQ0TP@MZiP?>=&*`~Hh3 z_Yhw<+U4Pkd^E;8K`d`5l#q9Zj%dCGVtG5EguJKe*vm1~4%}d&Yzx0nWPRx)slUt- z&9_1W;w?I&`Tk-);r4S#o-m(BTc%HOh@RPl9jI@d*c86KrpPU3u418}oJK4Fao!y7}b)6Xlgz_`CnW`x`?i7cu|< diff --git a/ipl/ipl.elf b/ipl/ipl.elf deleted file mode 100644 index bbf450d350501935058fbcb3fa52fd0038be07e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83956 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%0DS|P>!a283;jjtpMlR4`dMdt<=+c^8hD1#Zx#B$ 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 MIclOcLTK&&2Pwy|l>h($ diff --git a/ipl/kfuse.o b/ipl/kfuse.o deleted file mode 100644 index af2ca543fc6d531facaeca662bb60972cee23f0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1032 zcma)4K~ED=5dL0w!FJIIMI&IMHHBD=z94Br!ihqJ*kEFeCq0z6-Dldgg{J!;dZI@U z9*kEwkoX(Caq!>|z=OX)|A2{!2Z?oNcOPsIMko1p=9~HU&Agr6f3UeOgn%`H63!X$ zI1^Py%8@H!3?8~4Tnv8x9`uWss?ReMjp^0XlY9en?;P(-t~$B(wwQZ(fUi?t!~Jx) z`s=fpV|5ALLQl7~3U#5pG+$Vf_vHdA z^VC~u-^IoELAvS;-4t*TU)E|I z%B0PKi(EQE{37v{v)u3m4o1%^95}du%j9{cO+udDpCNB;oPv9nkY|q8i``JmI%W-K zgP7HNS_P=Lcj~R0-d28F*CJJt3YuXmM@R5f-WagRo(GoUtBz4VdDDx1!$wBGG?0NZ z3epclNZNNg`tz~_u)6v@`q>V{sOt0zh8XeNn|7+Jt$lt+!q4@tgf7|ZuR-&_; z_?zxF>9T}>=@ydn(tUXs*6arFQi6BAk`%ttK)es`!5Rj~6#~!7=d$$)MGg|<8ly^} z*}6#@?%i$~zT;|aHSC5j_@vBE)O_Phz=Y26PhJhLM5R`&-p CO>)iv diff --git a/ipl/lz.o b/ipl/lz.o deleted file mode 100644 index 0bb90188f6ac49573e90a218750ace1b9dd9f4a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1148 zcma)4&u{69%?49UqrJ2c;ewZHduXb4fi;qrN?>h}OTFkH zpcjLtClB`47<=PS@X)FU6R#%R491w=iZd)PE+j@L`QH5ccHX?1-MW!U2_YawAc8+0 z@LK6)yz!2TUDJ!UT`!J9JV$hN zU#%i6bi9~aK|OV*o`@XmXn`uG0taiUv8ocAT@-Qg>Sf~lC+}{nAsR?4Z`+4Q?PuDK zrgp3+n!0^W+e`%TKBd&}hTbK_mp8$0&HJhCJL4rW{i`{<7=ws^Z6cjaUe_aeYjdq& z&oA86%htMORxCX}GpWxQSBx0uC+RJwWo8QyXUX)&Z^Nhf#ef*`jEa-uv>Fte2#Ik| z=gqx`do~{YXuGp&&*T6V&hR8hrHETpc;KS|*E~;9$Uo&Kkna{1-oCuoou=x?`g}h$ zig5iJVT8WNddXcJDR_bP)fEm|8?f!1Z1wp}h{AK4c5@V_!f zM1CXBlEwK~9h*8i8t>?a%_b5efKScp|e@o=^KBPz<&wPL| z*G&W|G2D&urulE+zLp7GFGgV5CrorK=inS8N1!*9oG9>?16oq0$g*D hFht;chY8%9oC%p|5szmjMbDZ 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 bufw<3;vAdndpSgQyTh2Leg;uVxBLGARqy8R diff --git a/ipl/max7762x.o b/ipl/max7762x.o deleted file mode 100644 index feb71eda85c27ec0b9e72e9fd654af2d31217c57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3404 zcma)8U1$_n6h4#LY&OeA&ajD3oen3iYM<(gzC`q!b}ugAY03VP|BRyWab z;b!2!HDVI;;7P2Lf{Y<@TS74~sXXht!~rwm&R3XmYsC-L~y(n?ni)sKi_1$t{DW zcRkeAOk-N}u@74FnQNn6>vy>A`2LTybntFqFtfJvNg6YV7OSa?#C&A>s(3}Kj`e96 zqa6QRSt6h@R?b{QX{=| zN?)y|)$>i%+zzm=*`_!`>YPZQ0GZ*d$5SoMiE^23Q5(+HfP~K5e8x z$41ztydhQdmP353t*inUd$*0CtqSAnPm?T@c^2ydX1SH%X2?fNr~IY{yAQ9rX-ux+ zFs9hV3K6)EtLq8+(jMT(ZQRZhj3&Qfhxst(XXhfcHw4@<8`n{Rd;7$Gg7)+R_nM9C zws2Sn_$Hr~w67ny*9rB*{CX<*#CrFsz#X^w)C!yu>nG^`FmMw#Zmi6;%xWOoJCr!RWDolmc0BeMGkg}<{Fq#205j18j3U3I_0W`yCn0{Q-UQt3Rec_#q zF>?BZlGn3(qM$3$;T~mJ9ZRKH=L+&b%R4e&ijZ%};A_t^aX{WRs zhpa+SJ0UK5vLSp}*{p0i!uL+OW9GRC4w1=ap1X3$MccV^%nrE7Z}}dkl4zTqfg_W< z;(53E{1F@Fw!ISGQ-SxG__U3}+fo*pycKw_i8pMB*Y@DZjK+IZ7N3cqv;+Um%Df(| zw=9+G6K`7yA=8dBls%cN6J(1$nPByEJxACI!PBQ$kw;DaT(23nLXdw?bl9SQl@<6b ztDkR=TWp0O|0OH(i>!XG&zjXgWA=G{Gl|9F;RBIHb&9$T>P}HSHV^SBVI5P#(aS?5rC%_;>k;fz8Q9EZuVkkI({)%!WQ(|R0$i8n`b&cpGjpF zHhZ$bqb$s2jl{H0g{-dUHUsIiiDcF>ur*vtznGZM8l><#y=_E?EQ`8U@nwf^vbUWG zXAk{e^mh~CeFuKh%AbW*h|+9`lwwv+PsL?&3`a?uccxmc4G-70W)hEUAS{Ge#oG*2tG^ zT6l)OXpovp7zt97g#xL31*r(C*5TM<>z|8rZ2NO@&P{$U(AwxtFcn*FBJy)skNUsE ztXc_P`+zz?>eSrKj6TcD=c`vu7)CymoHz6WSNX++x7vKa#Lb0ssBU-Kyd diff --git a/ipl/mc.o b/ipl/mc.o deleted file mode 100644 index cc4c65c89549b4fd68be0f6bed2df398d4b70131..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2488 zcmb7_!D|~=5XR?uckQ+1w6d+HvSO!-thS0Viwg#aP>O9_H@=wRYz(YpwZ25F zT1+nw=^ts%Q|4+%aF`vB4Es|!j(GYuzn8fcOt>; z^T(e~xi#I|T>t+tChdFT9xXm=YV`*{{?R!2T-eva683)utb(sFzXfiCJ7D;xu)`n% zqF@5VK@z0E444IT;2d}p^b@H%{3amkt4sJID1i#FfdlrzRZs^9;5zsOTsxUo*WvGg zZ^3uq2XGHGz|Y`5cmN)PU%_MW8@P5lt=@)z2Ixy+t3U_CAPgcP3MN1tBtZ(yfWPp} z3j8Wq1M6TDNKgbNPyse@z&^MNmOy=~KQmG~rGys7WIdr~A89eEWL2Cmd+}C*k>yb7kREA=`q)A}5xyIe zC$i(E8|u(POp3&KiG6))5UU>wUR}@X87&@@d{>yT`<>r3Nv2TqAWu?<$9?Ui#f63Q z@l?^;`>^a>c>mpa)v8!#&5F;>pN-EOZy2+5;Vka3X_@&liB~Yx=GLgcPZxt?RE>z2 z#LG%ljEk5!t-5!;`y=?9pwgesU{>k+#UN79PS6xYf~Js4I9CBvX%MrBAL;HuA+1NR zx%!IVl;%Il1BC{9^aHMb!dJC^)V!%edXHXr^-)iNe9#nRyZaw>^-I2p-=<>S=_^G zVCW>#dG@D>-eNzF52NMi`_k?+z~xBXT|VRw7m+Cg`?Qika`)pGudW7Y6J|Ix4o?)U7Sm)8H$&cogjKGW8D zH|03p>(KFO{5Kt+8?GH(H;%by-VO84m8V;SfX|?3o-Ts`pXziwv5E({j}w4zAM1F2 z83fmjpi%C{Gq2tO0zqB+7~MBLx(alB<~{T3eT_h{zjgG-_kjE3xYytJ81uTbfbBl& zO|^#ZC+C=-08)IUUHcuAX>S708aDQU?V>0aY9ROm;UA diff --git a/ipl/nx_emmc.o b/ipl/nx_emmc.o deleted file mode 100644 index 4cd93f27d52a1bed7c845fd0b90ade31f52532d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2180 zcma)6O=uKZ5Uw{pV-jODjz9Sk-A*Rx_(PMJsDp?k6E%W*5kd6ebk9s{kC{oD?pEW; zD0}d*7h(4#p7fxi2U)!3u(CH#1}`231qHnbf_gE2^=6)V(;7%Yb=6l@@9Wp~`qj0= z$BzghNQs~IhqjWX#QE(!|I1>y8GDJ*x=tXcdzHI*wvG{XxMizj@$i{ zrO6xi|8|BFlpF5cJv-8KGcml@7rXD~zs(y&{et!k_xib^oLnvTK7Z#wP0^@#$h)6U z%=_|9xg77vq_X!}W>?c8FLxjV#yk1sJPnxS&n4zsCrlcm&OxrF?B^G6CqJTk6>X+= zZ@#|UO%L}MpUn1Ne$ozOK$_H8%!Swq$! zjcrF~9oH#VNc;geHFAnpBw9tANGI2e4Wi5F7CoX@Y)K;7Ec!Vm>C=LqHJVP5$UrA` zF%Z$kpd_^;z?`e03E(ch09Y43<>q|-M^QBfwZ!r*DkZH!ZLxe?EZ-i>^X?YKppIC+ zV=)QOpfxevNxg{h_uYi1vHx9KMJN2>7(N-pM}T?#7HAsZce;TsiQA|GtAzP{DAx}_ z)9CJvCfq^)04w2onwlxNwOYw4QMD3A1;_W@sWJ^jDp9!LM+M&rLYHbzwK`p*u#Eab z7)=Mx1-B5mPPwV}eBio216UXp&R4(~MnS3OHz%6b%F-)AC30hLsK>C?m8=^Gw*ht| z(N?zjA@Ys*EZY@?c~Ot|v&8|RRMtzo8Ndp!)*`0}8wGXiDKBzoBC^U(8-JFpX$*@>$DF2J|{c!YihAKOXOsGmdMqcVwI+AHFpX-#znWBC<-dYOOYGm8<#1Y zP{;oZ+9stwa~lALb1Z#O_SFqus%{%lpK0Qljb(BEYwK zw2{bRbY$VLh4Pf(Ny7U&2i5tW1M}TdqWI1tp!3-v;PuSMQ$_Jzg|G9y2j;t}MDblh zK`g{}G~#*Ywq4Nb%6d(7|UImO?q{yn(#7r+B{ T8lw34eDu0m5WG=Eu&V9{0?0CF diff --git a/ipl/pinmux.o b/ipl/pinmux.o deleted file mode 100644 index 12c0e2edce0406ff08da377da7ab62adc3f47224..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1064 zcma)4%}(1u5T0f2G*DG4gbMdZB`A>y6)RVb2r?q5ME8g&7>P1=B{C&? zN@J9*lDKlH@Np(r%WPdZbkD(0dLD~@{Yhu#z_dh?;(-lEB9azK7XCn5EP4i5?1u(# zAjux$+Yx`V&$s&?JCZU(_z68nglFI#OrU=u!EYjr^MT)Pbx%}-ikgbe1nxDC+WY>O zy{_BQLm_{mL8QXdmUio~x)a+2<7w|ilWMx!B~=eYQXEimmw~eXN^o)2IBK=LHi}@K z%GJ8#*Sp#aap6bGYw&nx^Ecx6cYoOIbSB}MEj`4W1uqNzA8$UXm+qUcX|}sQ#5(}y zeHbyk&j|2c%SqxAmiK3bbFBMN+$}KiZ*blj0LvT}w&@po4SWY3h4MS(zWiPon_1z~ X4;)-%ClOO`95~JUjl{7b!5ZFQ98PeS diff --git a/ipl/pkg1.o b/ipl/pkg1.o deleted file mode 100644 index ba3a1de2a337915dd95a02a2aeadf3044153040d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2640 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 ag}?T1Ry`*VxinTUFSZ8XNLCCnX8r?$3;t>V diff --git a/ipl/sdmmc.o b/ipl/sdmmc.o deleted file mode 100644 index c1fb19d96151981574cf8fa79266f5a657bdeae2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15232 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 diff --git a/ipl/sdram.o b/ipl/sdram.o deleted file mode 100644 index 86da92f4772f89976314fe329ea363423620b2a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9084 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 diff --git a/ipl/sdram_lp0.o b/ipl/sdram_lp0.o deleted file mode 100644 index 181b6b1f25c04514ca65a513d9a4b7c24b541761..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17580 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 SyN;9FJ%)CTxkiX{?fwUgXQTxH From 44e37ee5fd309fea92edda3931901005419f680b Mon Sep 17 00:00:00 2001 From: Steven Mattera Date: Sun, 13 May 2018 08:39:01 -0400 Subject: [PATCH 5/7] Fixed gitignore. --- .gitignore | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 2976182..273ba03 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ .vs .vscode -build/ipl build/*.o -build/bin/*.elf +build/*.elf +build/bin/ipl From f0e0821fdd2c6f9e716698c553e7c2850e1605fa Mon Sep 17 00:00:00 2001 From: Steven Mattera Date: Sun, 13 May 2018 08:39:17 -0400 Subject: [PATCH 6/7] Deleted unused files. --- ipl/btn.c | 42 ----------------------- ipl/btn.h | 29 ---------------- ipl/hos.h | 1 - ipl/ini.c | 93 -------------------------------------------------- ipl/ini.h | 39 --------------------- ipl/kfuse.c | 42 ----------------------- ipl/kfuse.h | 41 ---------------------- ipl/tui.c | 98 ----------------------------------------------------- ipl/tui.h | 58 ------------------------------- 9 files changed, 443 deletions(-) delete mode 100644 ipl/btn.c delete mode 100644 ipl/btn.h delete mode 100644 ipl/ini.c delete mode 100644 ipl/ini.h delete mode 100644 ipl/kfuse.c delete mode 100644 ipl/kfuse.h delete mode 100644 ipl/tui.c delete mode 100644 ipl/tui.h diff --git a/ipl/btn.c b/ipl/btn.c deleted file mode 100644 index c346fce..0000000 --- a/ipl/btn.c +++ /dev/null @@ -1,42 +0,0 @@ -/* -* Copyright (c) 2018 naehrwert -* -* This program is free software; you can redistribute it and/or modify it -* under the terms and conditions of the GNU General Public License, -* version 2, as published by the Free Software Foundation. -* -* This program is distributed in the hope it will be useful, but WITHOUT -* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -* more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see . -*/ - -#include "btn.h" -#include "i2c.h" -#include "gpio.h" -#include "t210.h" - -u32 btn_read() -{ - u32 res = 0; - if (!gpio_read(GPIO_PORT_X, GPIO_PIN_7)) - res |= BTN_VOL_DOWN; - if (!gpio_read(GPIO_PORT_X, GPIO_PIN_6)) - res |= BTN_VOL_UP; - if (i2c_recv_byte(4, 0x3C, 0x15) & 0x4) - res |= BTN_POWER; - return res; -} - -u32 btn_wait() -{ - u32 res = 0, btn = btn_read(); - do - { - res = btn_read(); - } while (btn == res); - return res; -} diff --git a/ipl/btn.h b/ipl/btn.h deleted file mode 100644 index 8c5a8c5..0000000 --- a/ipl/btn.h +++ /dev/null @@ -1,29 +0,0 @@ -/* -* Copyright (c) 2018 naehrwert -* -* This program is free software; you can redistribute it and/or modify it -* under the terms and conditions of the GNU General Public License, -* version 2, as published by the Free Software Foundation. -* -* This program is distributed in the hope it will be useful, but WITHOUT -* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -* more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see . -*/ - -#ifndef _BTN_H_ -#define _BTN_H_ - -#include "types.h" - -#define BTN_POWER 0x1 -#define BTN_VOL_DOWN 0x2 -#define BTN_VOL_UP 0x4 - -u32 btn_read(); -u32 btn_wait(); - -#endif diff --git a/ipl/hos.h b/ipl/hos.h index 699bf03..4920796 100644 --- a/ipl/hos.h +++ b/ipl/hos.h @@ -18,7 +18,6 @@ #define _HOS_H_ #include "types.h" -#include "ini.h" int hos_launch(); diff --git a/ipl/ini.c b/ipl/ini.c deleted file mode 100644 index 8551203..0000000 --- a/ipl/ini.c +++ /dev/null @@ -1,93 +0,0 @@ -/* -* Copyright (c) 2018 naehrwert -* -* This program is free software; you can redistribute it and/or modify it -* under the terms and conditions of the GNU General Public License, -* version 2, as published by the Free Software Foundation. -* -* This program is distributed in the hope it will be useful, but WITHOUT -* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -* more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see . -*/ - -#include - -#include "ini.h" -#include "ff.h" -#include "heap.h" - - -static char *_strdup(char *str) -{ - char *res = malloc(strlen(str) + 1); - strcpy(res, str); - return res; -} - -int ini_parse(link_t *dst, char *ini_path) -{ - u32 lblen; - char lbuf[512]; - FIL fp; - ini_sec_t *csec = NULL; - - if (f_open(&fp, ini_path, FA_READ) != FR_OK) - return 0; - - do - { - //Fetch one line. - lbuf[0] = 0; - f_gets(lbuf, 512, &fp); - lblen = strlen(lbuf); - - //Skip empty lines and comments. - if (lblen <= 1 || lbuf[0] == '#') - continue; - - //Remove trailing newline. - if (lbuf[lblen - 1] == '\n') - lbuf[lblen - 1] = 0; - - if (lblen > 2 && lbuf[0] == '[') //Create new section. - { - if (csec) - { - list_append(dst, &csec->link); - csec = NULL; - } - - u32 i; - for (i = 0; i < lblen && lbuf[i] != '\n' && lbuf[i] != ']'; i++) - ; - lbuf[i] = 0; - - csec = (ini_sec_t *)malloc(sizeof(ini_sec_t)); - csec->name = _strdup(&lbuf[1]); - list_init(&csec->kvs); - } - else if (csec) //Extract key/value. - { - u32 i; - for (i = 0; i < lblen && lbuf[i] != '\n' && lbuf[i] != '='; i++) - ; - lbuf[i] = 0; - - ini_kv_t *kv = (ini_kv_t *)malloc(sizeof(ini_kv_t)); - kv->key = _strdup(&lbuf[0]); - kv->val = _strdup(&lbuf[i + 1]); - list_append(&csec->kvs, &kv->link); - } - } while (!f_eof(&fp)); - - f_close(&fp); - - if (csec) - list_append(dst, &csec->link); - - return 1; -} diff --git a/ipl/ini.h b/ipl/ini.h deleted file mode 100644 index 091009e..0000000 --- a/ipl/ini.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -* Copyright (c) 2018 naehrwert -* -* This program is free software; you can redistribute it and/or modify it -* under the terms and conditions of the GNU General Public License, -* version 2, as published by the Free Software Foundation. -* -* This program is distributed in the hope it will be useful, but WITHOUT -* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -* more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see . -*/ - -#ifndef _INI_H_ -#define _INI_H_ - -#include "types.h" -#include "list.h" - -typedef struct _ini_kv_t -{ - char *key; - char *val; - link_t link; -} ini_kv_t; - -typedef struct _ini_sec_t -{ - char *name; - link_t kvs; - link_t link; -} ini_sec_t; - -int ini_parse(link_t *dst, char *ini_path); - -#endif diff --git a/ipl/kfuse.c b/ipl/kfuse.c deleted file mode 100644 index 03d95bb..0000000 --- a/ipl/kfuse.c +++ /dev/null @@ -1,42 +0,0 @@ -/* -* Copyright (c) 2018 naehrwert -* -* This program is free software; you can redistribute it and/or modify it -* under the terms and conditions of the GNU General Public License, -* version 2, as published by the Free Software Foundation. -* -* This program is distributed in the hope it will be useful, but WITHOUT -* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -* more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see . -*/ - -#include "kfuse.h" -#include "clock.h" -#include "t210.h" - -int kfuse_read(u32 *buf) -{ - int res = 0; - - clock_enable_kfuse(); - - while (!(KFUSE(KFUSE_STATE) & KFUSE_STATE_DONE)) - ; - - if (!(KFUSE(KFUSE_STATE) & KFUSE_STATE_CRCPASS)) - goto out; - - KFUSE(KFUSE_KEYADDR) = KFUSE_KEYADDR_AUTOINC; - for (int i = 0; i < KFUSE_NUM_WORDS; i++) - buf[i] = KFUSE(KFUSE_KEYS); - - res = 1; - -out:; - clock_disable_kfuse(); - return res; -} diff --git a/ipl/kfuse.h b/ipl/kfuse.h deleted file mode 100644 index 4aa1b09..0000000 --- a/ipl/kfuse.h +++ /dev/null @@ -1,41 +0,0 @@ -/* -* Copyright (c) 2018 naehrwert -* -* This program is free software; you can redistribute it and/or modify it -* under the terms and conditions of the GNU General Public License, -* version 2, as published by the Free Software Foundation. -* -* This program is distributed in the hope it will be useful, but WITHOUT -* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -* more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see . -*/ - -#ifndef _KFUSE_H_ -#define _KFUSE_H_ - -#include "types.h" - -#define KFUSE_STATE_SOFTRESET (1<<31) -#define KFUSE_STATE_STOP (1<<25) -#define KFUSE_STATE_RESTART (1<<24) -#define KFUSE_STATE_CRCPASS (1<<17) -#define KFUSE_STATE_DONE (1<<16) -#define KFUSE_STATE_ERRBLOCK_MASK 0x3F00 -#define KFUSE_STATE_ERRBLOCK_SHIFT 8 -#define KFUSE_STATE_CURBLOCK_MASK 0x3F - -#define KFUSE_KEYADDR_AUTOINC (1<<16) - -#define KFUSE_STATE 0x80 -#define KFUSE_KEYADDR 0x88 -#define KFUSE_KEYS 0x8C - -#define KFUSE_NUM_WORDS 144 - -int kfuse_read(u32 *buf); - -#endif diff --git a/ipl/tui.c b/ipl/tui.c deleted file mode 100644 index ef3aff1..0000000 --- a/ipl/tui.c +++ /dev/null @@ -1,98 +0,0 @@ -/*{ -* Copyright (c) 2018 naehrwert -* -* This program is free software; you can redistribute it and/or modify it -* under the terms and conditions of the GNU General Public License, -* version 2, as published by the Free Software Foundation. -* -* This program is distributed in the hope it will be useful, but WITHOUT -* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -* more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see . -*/ - -#include "tui.h" -#include "btn.h" - -void tui_pbar(gfx_con_t *con, int x, int y, u32 val) -{ - u32 cx, cy; - - gfx_con_getpos(con, &cx, &cy); - - gfx_con_setpos(con, x, y); - - gfx_printf(con, "[%3d%%]", val); - - x += 7 * 8; - - for (int i = 0; i < 6; i++) - { - gfx_line(con->gfx_ctxt, x, y + i + 1, x + 3 * val, y + i + 1, 0xFFFFFFFF); - gfx_line(con->gfx_ctxt, x + 3 * val, y + i + 1, x + 3 * 100, y + i + 1, 0xFF888888); - } - - gfx_con_setpos(con, cx, cy); -} - -void *tui_do_menu(gfx_con_t *con, menu_t *menu) -{ - int idx = 0, cnt; - - gfx_clear(con->gfx_ctxt, 0xFF000000); - - while (1) - { - gfx_con_setcol(con, 0xFFFFFFFF, 1, 0xFF000000); - gfx_con_setpos(con, menu->x, menu->y); - gfx_printf(con, "[%s]\n\n", menu->caption); - - for (cnt = 0; menu->ents[cnt].type != MENT_END; cnt++) - { - if (cnt == idx) - gfx_con_setcol(con, 0xFF000000, 1, 0xFFCCCCCC); - else - gfx_con_setcol(con, 0xFFFFFFFF, 1, 0xFF000000); - con->x += 8; - gfx_printf(con, "%s", menu->ents[cnt].caption); - if(menu->ents[cnt].type == MENT_MENU) - gfx_printf(con, "%k...", 0xFFEE9900); - gfx_putc(con, '\n'); - } - - gfx_con_setcol(con, 0xFFFFFFFF, 1, 0xFF000000); - gfx_putc(con, '\n'); - - u32 btn = btn_wait(); - - if (btn & BTN_VOL_DOWN && idx < cnt - 1) - idx++; - if (btn & BTN_VOL_UP && idx > 0) - idx--; - if (btn & BTN_POWER) - { - ment_t *ent = &menu->ents[idx]; - switch (ent->type) - { - case MENT_HANDLER: - ent->handler(ent->data); - break; - case MENT_MENU: - return tui_do_menu(con, ent->menu); - break; - case MENT_CHOICE: - return ent->data; - break; - case MENT_BACK: - return NULL; - break; - } - gfx_clear(con->gfx_ctxt, 0xFF000000); - } - } - - return NULL; -} diff --git a/ipl/tui.h b/ipl/tui.h deleted file mode 100644 index 6b1f2df..0000000 --- a/ipl/tui.h +++ /dev/null @@ -1,58 +0,0 @@ -/* -* Copyright (c) 2018 naehrwert -* -* This program is free software; you can redistribute it and/or modify it -* under the terms and conditions of the GNU General Public License, -* version 2, as published by the Free Software Foundation. -* -* This program is distributed in the hope it will be useful, but WITHOUT -* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -* more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see . -*/ - -#ifndef _TUI_H_ -#define _TUI_H_ - -#include "types.h" -#include "gfx.h" - -#define MENT_END 0 -#define MENT_HANDLER 1 -#define MENT_MENU 2 -#define MENT_CHOICE 3 -#define MENT_BACK 4 - -typedef struct _ment_t -{ - u32 type; - const char *caption; - void *data; - union - { - void(*handler)(void *); - struct _menu_t *menu; - }; -} ment_t; - -typedef struct _menu_t -{ - ment_t *ents; - const char *caption; - u32 x; - u32 y; -} menu_t; - -#define MDEF_END() {MENT_END} -#define MDEF_HANDLER(caption, _handler) { MENT_HANDLER, caption, NULL, { .handler = _handler } } -#define MDEF_HANDLER_EX(caption, data, _handler) { MENT_HANDLER, caption, data, { .handler = _handler } } -#define MDEF_MENU(caption, _menu) { MENT_MENU, caption, NULL, { .menu = _menu } } -#define MDEF_BACK() { MENT_BACK, "Back" } - -void tui_pbar(gfx_con_t *con, int x, int y, u32 val); -void *tui_do_menu(gfx_con_t *con, menu_t *menu); - -#endif From 4b1a45dd7ba47c2d23c1b306445e5a7fff5f2640 Mon Sep 17 00:00:00 2001 From: Steven Mattera Date: Sun, 13 May 2018 08:45:55 -0400 Subject: [PATCH 7/7] Updated the README.md --- README.md | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index b4aca67..b3b68dc 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,9 @@ -# hekate for 5.0.x +# hekate for 4.x / 5.0.x -DO NOT UPDATE TO 5.0.2 FOR THIS +DO NOT UPDATE FOR THIS Original by @nwert ![Image of Hekate](https://upload.wikimedia.org/wikipedia/commons/f/fc/H%C3%A9cate_-_Mallarm%C3%A9.png) Nintendo Switch bootloader, firmware patcher, and more. - -## ipl config - -The ipl can be configured via 'hekate_ipl.ini' (if it is present on the SD card). Each ini section represents a boot entry, except for the special section 'config' that controls the global configuration. - -Possible key/value combinations: - - - warmboot={SD path} - - secmon={SD path} - - kernel={SD path} - - kip1={SD path}