mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
NandFormatter ver.0の起動制限がうまくいっていなかったのを修正。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1253 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
0ad1f75557
commit
0db2184e7d
@ -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++;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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++;
|
||||
}
|
||||
}
|
||||
|
||||
Binary file not shown.
Loading…
Reference in New Issue
Block a user