NANDアプリブート時にカードアプリのROMヘッダを参照している箇所を修正。

HOTSW終了処理の完了をARM9で確認。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1383 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
nakasima 2008-05-16 09:34:22 +00:00
parent b8ca604cc3
commit d42503d188
6 changed files with 35 additions and 8 deletions

View File

@ -61,6 +61,11 @@ void BOOT_Ready( void )
BOOL isNtrMode;
int i;
// HOTSW<53>I—¹<E28094>ˆ<CB86>Ò¿
while( ! HOTSW_isFinalized() ) {
OS_Sleep( 1 );
}
// エントリアドレスの正当性をチェックし、無効な場合は無限ループに入る。
// SYSMi_CheckEntryAddress();

View File

@ -1908,7 +1908,7 @@ static void FinalizeHotSw(HotSwApliType type)
if(type == HOTSW_APLITYPE_CARD){
ClearUnnecessaryCardRegister();
return;
goto final;
}
isCardExist = HOTSW_IsCardExist();
@ -1918,7 +1918,7 @@ static void FinalizeHotSw(HotSwApliType type)
// カードがなかったら、レジスタクリアしてリターン
if(!isCardExist){
ClearAllCardRegister();
return;
goto final;
}
switch(type){
@ -1932,7 +1932,7 @@ static void FinalizeHotSw(HotSwApliType type)
OS_PutString("Failed To Change Game Mode... Card Slot Power Off\n");
return;
goto final;
}
break;
@ -1944,7 +1944,8 @@ static void FinalizeHotSw(HotSwApliType type)
OS_Sleep(1);
}
if(s_cbData.pBootSegBuf->rh.s.game_card_on){
// NANDアプリヘッダはコピー済み
if(((ROM_Header*)SYSM_CARD_ROM_HEADER_BUF)->s.game_card_on){
McPowerOn();
s_cbData.modeType = HOTSW_MODE2;
@ -1967,6 +1968,10 @@ static void FinalizeHotSw(HotSwApliType type)
// 必要なレジスタ以外クリア
ClearUnnecessaryCardRegister();
final:
// 終了完了通知
SYSMi_GetWork()->flags.hotsw.isFinalized = TRUE;
}

View File

@ -117,6 +117,17 @@ void HOTSW_FinalizeHotSWAsync( HotSwApliType apliType )
}
/*---------------------------------------------------------------------------*
Name: HOTSW_isFinalized
Description:
*---------------------------------------------------------------------------*/
BOOL HOTSW_isFinalized(void)
{
return SYSMi_GetWork()->flags.hotsw.isFinalized;
}
/*---------------------------------------------------------------------------*
Name: HOTSW_isEnableHotSW
@ -124,7 +135,7 @@ void HOTSW_FinalizeHotSWAsync( HotSwApliType apliType )
*---------------------------------------------------------------------------*/
BOOL HOTSW_isEnableHotSW(void)
{
return SYSMi_GetWork()->flags.hotsw.isEnableHotSW ? TRUE : FALSE;
return SYSMi_GetWork()->flags.hotsw.isEnableHotSW;
}
@ -135,7 +146,7 @@ BOOL HOTSW_isEnableHotSW(void)
*---------------------------------------------------------------------------*/
BOOL HOTSW_isCardLoadCompleted(void)
{
return SYSMi_GetWork()->flags.hotsw.isCardLoadCompleted ? TRUE : FALSE;
return SYSMi_GetWork()->flags.hotsw.isCardLoadCompleted;
}

View File

@ -401,6 +401,8 @@ static void SYSMi_FinalizeHotSWAsync( TitleProperty *pBootTitle, ROM_Header *hea
{
HotSwApliType hotsw_type;
DC_StoreRange( head, sizeof(ROM_Header) );
switch( pBootTitle->flags.bootType )
{
case LAUNCHER_BOOTTYPE_NAND:
@ -692,10 +694,10 @@ OS_TPrintf("RebootSystem failed: cant read file(%d, %d)\n", source[i], len);
{
// ヘッダ読み込み完了フラグを立てる
SYSMi_GetWork()->flags.common.isHeaderLoadCompleted = TRUE;
// WRAM経由ロードの場合はAES初期化
(void)SYSM_InitDecryptAESRegion_W( (ROM_Header_Short *)destaddr[region_header] );
// HOTSW終了処理有効化
SYSMi_FinalizeHotSWAsync( pBootTitle, head );
// WRAM経由ロードの場合はAES初期化
(void)SYSM_InitDecryptAESRegion_W( (ROM_Header_Short *)destaddr[region_header] );
}
}

View File

@ -107,6 +107,9 @@ BOOL HOTSW_isEnableHotSW(void);
// カードアプリのロードが完了しているかを返す
BOOL HOTSW_isCardLoadCompleted(void);
// 終了処理が完了したかを返す
BOOL HOTSW_isFinalized(void);
#ifdef USE_WRAM_LOAD
// 活栓挿抜処理の初期化
void HOTSW_Init();

View File

@ -124,6 +124,7 @@ typedef struct SYSM_work {
vu16 isValidCardBanner :1; // バナーデータ更新?
vu16 is1stCardChecked :1; // カードデータの1stチェック完了
vu16 isCardGameMode :1; // カードがゲームモードに遷移したか?
vu16 isFinalized :1; // HOTSW<53>I—¹<E28094>ˆ<CB86>Š®—¹
vu16 :0;
vu8 isCardStateChanged; // カード状態更新フラグ
}hotsw;