mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
・起動時にカードが挿入されていた場合の1発目の活線挿抜処理内でカードリージョンチェックを
行う際に、ARM9側でまだ本体リージョンのリードが完了していないタイミングがあり、リージョン 不一致でも、カードが認識されることがあったのを修正。 git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2218 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
1a008364d7
commit
a5e39e68c5
@ -28,6 +28,7 @@ TARGET_BIN ?= $(TARGET_FIRM_BIN)
|
||||
#
|
||||
override TARGET_PLATFORM := TWL
|
||||
override TWL_ARCHGEN := LIMITED
|
||||
override TWL_CODEGEN := ARM
|
||||
override TWL_MEMSIZE := 16M
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
@ -433,16 +433,6 @@ static HotSwState LoadCardData(void)
|
||||
}
|
||||
|
||||
if(s_cbData.pBootSegBuf->rh.s.platform_code & PLATFORM_CODE_FLAG_TWL){
|
||||
// デバッガでリージョン違いのアプリを読んだ場合、正常に動作しなくなるのを回避するため
|
||||
u64 card_title_id = s_cbData.pBootSegBuf->rh.s.titleID;
|
||||
u64 my_title_id = ((ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF)->titleID;
|
||||
if(!s_debuggerFlg || card_title_id != my_title_id){
|
||||
// リージョンチェック
|
||||
if( !UTL_CheckAppRegion( s_cbData.pBootSegBuf->rh.s.card_region_bitmap ) ) {
|
||||
retval = (retval == HOTSW_SUCCESS) ? HOWSW_REGION_CHECK_ERROR : retval;
|
||||
}
|
||||
}
|
||||
|
||||
s_cbData.twlFlg = TRUE;
|
||||
}
|
||||
|
||||
|
||||
@ -288,6 +288,7 @@ TitleProperty *SYSM_GetCardTitleList( BOOL *changed )
|
||||
|
||||
if( SYSMi_GetWork()->flags.hotsw.isCardStateChanged ) {
|
||||
u16 id = (u16)OS_GetLockID();
|
||||
const ROM_Header_Short *pROMH_bak = (ROM_Header_Short *)SYSM_CARD_ROM_HEADER_BAK;
|
||||
|
||||
MI_CpuClear32( pTitleList_Card, sizeof(TitleProperty) );
|
||||
|
||||
@ -295,23 +296,27 @@ TitleProperty *SYSM_GetCardTitleList( BOOL *changed )
|
||||
|
||||
// ROMヘッダバッファのコピー
|
||||
if( SYSM_IsExistCard() ) {
|
||||
|
||||
// ROMヘッダのリード
|
||||
(void)SYSMi_CopyCardRomHeader();
|
||||
// バナーデータのリード
|
||||
(void)SYSMi_CopyCardBanner();
|
||||
|
||||
pTitleList_Card->pBanner = &s_card_bannerBuf;
|
||||
AMN_stepBannerAnime(0, TRUE); // バナーカウンタセットしなおし
|
||||
pTitleList_Card->flags.isValid = TRUE;
|
||||
pTitleList_Card->flags.isAppLoadCompleted = FALSE;
|
||||
pTitleList_Card->flags.isAppRelocate = TRUE;
|
||||
MI_CpuCopy8( SYSM_GetCardRomHeader(), AMN_getRomHeaderList(), sizeof(ROM_Header_Short) );
|
||||
if( ( pROMH_bak->platform_code & PLATFORM_CODE_FLAG_TWL ) && !UTL_CheckAppRegion( pROMH_bak->card_region_bitmap ) ) {
|
||||
// TWLアプリでカードリージョンが本体と一致しないものは、カードを認識しない。
|
||||
OS_TPrintf( "Region Check NG : %llx\n", pROMH_bak->titleID );
|
||||
MI_CpuClearFast( (void *)SYSM_APP_ROM_HEADER_BUF, SYSM_APP_ROM_HEADER_SIZE ); // ROMヘッダのクリア
|
||||
MI_CpuClearFast( &s_card_bannerBuf, sizeof(TWLBannerFile) ); // バナーデータのクリア
|
||||
}else {
|
||||
// ROMヘッダのリード
|
||||
(void)SYSMi_CopyCardRomHeader();
|
||||
// バナーデータのリード
|
||||
(void)SYSMi_CopyCardBanner();
|
||||
|
||||
pTitleList_Card->pBanner = &s_card_bannerBuf;
|
||||
AMN_stepBannerAnime(0, TRUE); // バナーカウンタセットしなおし
|
||||
pTitleList_Card->flags.isValid = TRUE;
|
||||
pTitleList_Card->flags.isAppLoadCompleted = FALSE;
|
||||
pTitleList_Card->flags.isAppRelocate = TRUE;
|
||||
MI_CpuCopy8( SYSM_GetCardRomHeader(), AMN_getRomHeaderList(), sizeof(ROM_Header_Short) );
|
||||
}
|
||||
}else {
|
||||
// ROMヘッダのクリア
|
||||
MI_CpuClearFast( (void *)SYSM_APP_ROM_HEADER_BUF, SYSM_APP_ROM_HEADER_SIZE );
|
||||
// バナーデータのクリア
|
||||
MI_CpuClearFast( &s_card_bannerBuf, sizeof(TWLBannerFile) );
|
||||
MI_CpuClearFast( (void *)SYSM_APP_ROM_HEADER_BUF, SYSM_APP_ROM_HEADER_SIZE ); // ROMヘッダのクリア
|
||||
MI_CpuClearFast( &s_card_bannerBuf, sizeof(TWLBannerFile) ); // バナーデータのクリア
|
||||
}
|
||||
|
||||
SYSMi_GetWork()->flags.hotsw.isCardStateChanged = FALSE; // カード情報更新フラグを落とす
|
||||
|
||||
Loading…
Reference in New Issue
Block a user