diff --git a/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c b/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c index 793d3ef2..183ab079 100644 --- a/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c +++ b/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c @@ -39,12 +39,21 @@ #define CLRLIST_REBOOT_STACK_PAD_SIZE_IDX (2*3+1) +#define TITLE_ID_NAND_INITIALIZER 0x00030011304E4941UL // 0NIA + +// 起動制限をかけるタイトル一覧 +typedef struct TitleBlackList { + OSTitleId titleID; + int rom_version; +}TitleBlackList; + // extern data------------------------------------------------------- // function's prototype---------------------------------------------- static void BOOTi_ClearREG_RAM( void ); static void BOOTi_CutAwayRegionList( u32 *regionlist, u32 start, u32 end ); +static void BOOTi_CheckTitleBlackList( void ); // global variables-------------------------------------------------- @@ -74,6 +83,13 @@ static u32 nitro_post_clear_list[POST_CLEAR_NUM_MAX + 1] = // const data-------------------------------------------------------- +// 起動制限をかけるタイトル一覧 +static const TitleBlackList s_blackList[] = { + { TITLE_ID_NAND_INITIALIZER, 0 }, + { 0UL, -1 }, +}; + + void BOOT_Init( void ) { reg_PXI_MAINPINTF = 0x0000; @@ -103,6 +119,9 @@ BOOL BOOT_WaitStart( void ) MI_CpuCopyFast( (void *)SYSM_CARD_ROM_HEADER_BUF, (void *)HW_ROM_HEADER_BUF, HW_ROM_HEADER_BUF_END - HW_ROM_HEADER_BUF ); } + // ブラックリストをチェックし、起動制限をかける + BOOTi_CheckTitleBlackList(); + (void)OS_DisableIrq(); // ここで割り込み禁止にしないとダメ。 (void)OS_SetIrqMask(0); // SDKバージョンのサーチに時間がかかると、ARM9がHALTにかかってしまい、ARM7のサウンドスレッドがARM9にFIFOでデータ送信しようとしてもFIFOが一杯で送信できない状態で無限ループに入ってしまう。 (void)OS_SetIrqMaskEx(0); @@ -374,3 +393,21 @@ static void BOOTi_CutAwayRegionList( u32 *regionlist, u32 start, u32 end ) BOOTi_DeliteElementFromList( regionlist, (u32)n ); } } + +// 起動制限をかけるブラックリストTITLEのチェック +static void BOOTi_CheckTitleBlackList( void ) +{ + const TitleBlackList *pBlackList = &s_blackList[ 0 ]; + ROM_Header_Short *pROMH = (ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF; + + while( pBlackList->rom_version >= 0 ) { + if( ( pBlackList->titleID == pROMH->titleID ) && + ( pBlackList->rom_version == pROMH->rom_version ) ) { + OS_TPrintf( "Hit black list : %c%c%c%c ver.%d...Terminate.\n", + pROMH->titleID_Lo[ 3 ], pROMH->titleID_Lo[ 2 ], pROMH->titleID_Lo[ 1 ], pROMH->titleID_Lo[ 0 ], + pROMH->rom_version ); + OS_Terminate(); + } + pBlackList++; + } +} diff --git a/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c b/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c index 8636a493..3538f27f 100644 --- a/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c +++ b/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c @@ -30,31 +30,16 @@ // define data------------------------------------------------------- #define SUBP_RECV_IF_ENABLE 0x4000 -#define TITLE_ID_NAND_INITIALIZER 0x00030011304E4941UL // 0NIA - -// 起動制限をかけるタイトル一覧 -typedef struct TitleBlackList { - OSTitleId titleID; - int rom_version; -}TitleBlackList; // extern data------------------------------------------------------- // function's prototype---------------------------------------------- static void BOOTi_ClearREG_RAM( void ); -static void BOOTi_CheckTitleBlackList( void ); // global variables-------------------------------------------------- // static variables-------------------------------------------------- -// 起動制限をかけるタイトル一覧 -static const TitleBlackList s_blackList[] = { - { TITLE_ID_NAND_INITIALIZER, 0 }, - { 0UL, -1 }, -}; - - // const data-------------------------------------------------------- void BOOT_Init( void ) { @@ -76,9 +61,6 @@ void BOOT_Ready( void ) BOOL isNtrMode; int i; - // ブラックリストをチェックし、起動制限をかける - BOOTi_CheckTitleBlackList(); - // エントリアドレスの正当性をチェックし、無効な場合は無限ループに入る。 // SYSMi_CheckEntryAddress(); @@ -102,6 +84,7 @@ void BOOT_Ready( void ) OS_WaitIrq( 1, OS_IE_SUBP ); OS_TPrintf( "INTR SUBP passed!!\n" ); + // 割り込みをクリアして最終ブートシーケンスへ。 reg_PXI_SUBPINTF &= 0x0f00; // サブプロセッサ割り込み許可フラグをクリア (void)OS_DisableIrq(); @@ -228,21 +211,3 @@ static void BOOTi_ClearREG_RAM( void ) // レジスタクリアは基本的に OS_Boot で行う } - -// 起動制限をかけるブラックリストTITLEのチェック -static void BOOTi_CheckTitleBlackList( void ) -{ - const TitleBlackList *pBlackList = &s_blackList[ 0 ]; - ROM_Header_Short *pROMH = (ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF; - - while( pBlackList->rom_version >= 0 ) { - if( ( pBlackList->titleID == pROMH->titleID ) && - ( pBlackList->rom_version == pROMH->rom_version ) ) { - OS_TPrintf( "Hit black list : %c%c%c%c ver.%d...Terminate.\n", - pROMH->titleID_Lo[ 3 ], pROMH->titleID_Lo[ 2 ], pROMH->titleID_Lo[ 1 ], pROMH->titleID_Lo[ 0 ], - pROMH->rom_version ); - OS_Terminate(); - } - pBlackList++; - } -} diff --git a/docs/繝ェ繝ェ繝シ繧ケ_SDK_5_0_FC_plus2/SDK_5_0_FC_plus2_繝ゥ繝ウ繝√Ε繝シ繝√ぉ繝繧ッ陦ィ.xls b/docs/繝ェ繝ェ繝シ繧ケ_SDK_5_0_FC_plus2/SDK_5_0_FC_plus2_繝ゥ繝ウ繝√Ε繝シ繝√ぉ繝繧ッ陦ィ.xls index 47aa7b0f..286ff2af 100644 Binary files a/docs/繝ェ繝ェ繝シ繧ケ_SDK_5_0_FC_plus2/SDK_5_0_FC_plus2_繝ゥ繝ウ繝√Ε繝シ繝√ぉ繝繧ッ陦ィ.xls and b/docs/繝ェ繝ェ繝シ繧ケ_SDK_5_0_FC_plus2/SDK_5_0_FC_plus2_繝ゥ繝ウ繝√Ε繝シ繝√ぉ繝繧ッ陦ィ.xls differ