diff --git a/build/nandfirm/nandfirm-loader/ARM7/main.c b/build/nandfirm/nandfirm-loader/ARM7/main.c index 23749d6d..fd4cfedf 100644 --- a/build/nandfirm/nandfirm-loader/ARM7/main.c +++ b/build/nandfirm/nandfirm-loader/ARM7/main.c @@ -54,13 +54,12 @@ u32 profile[PRFILE_MAX]; u32 pf_cnt = 0; #endif -/* +/*************************************************************** PreInit - FromBootの対応をまとめる + FromBootの対応をまとめる&メインメモリの初期化 OS_Init前なので注意 (ARM9によるメインメモリ初期化で消されないように注意) -*/ - +***************************************************************/ static void PreInit(void) { @@ -77,6 +76,20 @@ static void PreInit(void) MIi_CpuClearFast( 0, (void*)OSi_GetFromBromAddr(), sizeof(OSFromBromBuf) ); } +/*************************************************************** + EraseAll + + 不正終了しました + いろいろ消してください + DSモードにして終わるのがよいか? +***************************************************************/ +static void EraseAll(void) +{ +#ifdef SDK_FINALROM + // TODO +#endif +} + void TwlSpMain( void ) { // OS_InitDebugLED and OS_SetDebugLED are able to call after OS_Init @@ -211,11 +224,14 @@ void TwlSpMain( void ) } } - // failed - PXI_NotifyID( FIRM_PXI_ID_NULL ); - OS_SetDebugLED( (u8)(0xF0 | step)); - OS_Terminate(); + EraseAll(); + + // failed + while (1) + { + PXI_NotifyID( FIRM_PXI_ID_NULL ); + } } diff --git a/build/nandfirm/nandfirm-loader/ARM9/main.c b/build/nandfirm/nandfirm-loader/ARM9/main.c index ee3614c4..741a7ed3 100644 --- a/build/nandfirm/nandfirm-loader/ARM9/main.c +++ b/build/nandfirm/nandfirm-loader/ARM9/main.c @@ -51,13 +51,12 @@ u32 profile[PRFILE_MAX]; u32 pf_cnt = 0; #endif -/* +/*************************************************************** PreInit FromBootの対応をまとめる&メインメモリの初期化 OS_Init前なので注意 -*/ - +***************************************************************/ static void PreInit(void) { /* @@ -80,6 +79,34 @@ static void PreInit(void) MIi_CpuClearFast( 0, (void*)OSi_GetFromBromAddr(), sizeof(OSFromBromBuf) ); } +/*************************************************************** + CheckHeader + + ヘッダがシステムメニューとして問題ないかチェック + 先頭32Bは固定値と思われ (リマスターバージョンは違うかな) +***************************************************************/ +static BOOL CheckHeader(void) +{ +#ifdef BOOT_SECURE_SRL + // TODO +#endif + return TRUE; +} + +/*************************************************************** + EraseAll + + 不正終了しました + いろいろ消してください + DSモードにして終わるのがよいか? +***************************************************************/ +static void EraseAll(void) +{ +#ifdef SDK_FINALROM + // TODO +#endif +} + void TwlMain( void ) { PreInit(); @@ -99,7 +126,7 @@ void TwlMain( void ) SVC_InitSignHeap( acPool, acHeap, sizeof(acHeap) ); // load menu - if ( MI_LoadHeader( acPool, RSA_KEY_ADDR ) && MI_LoadMenu() ) + if ( MI_LoadHeader( acPool, RSA_KEY_ADDR ) && CheckHeader() && MI_LoadMenu() ) { #ifndef SDK_FINALROM // 127: before BootMenu @@ -110,6 +137,12 @@ void TwlMain( void ) MI_BootMenu(); } - OS_Terminate(); + EraseAll(); + + // failed + while (1) + { + PXI_NotifyID( FIRM_PXI_ID_NULL ); + } }