ROMエミュレーション情報を初回ロード時しか読まないように変更。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1018 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
nakasima 2008-03-31 10:31:44 +00:00
parent 9220e19858
commit e7279e61d2
3 changed files with 24 additions and 18 deletions

View File

@ -38,7 +38,7 @@ HotSwState ChangeModeNormal2(CardBootData *cbd);
HotSwState LoadTable(void); HotSwState LoadTable(void);
// デバッガのROMエミュレーション情報読み込み // デバッガのROMエミュレーション情報読み込み
HotSwState ReadRomEmulationData(CardBootData *cbd); HotSwState ReadRomEmulationInfo(CardBootData *cbd);
// ■ セキュアモードのコマンド ■ // ■ セキュアモードのコマンド ■

View File

@ -318,11 +318,11 @@ HotSwState LoadTable(void)
} }
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
Name: ReadRomEmulationData Name: ReadRomEmulationInfo
Description: Romエミュレーションデータの読み込み Description: Romエミュレーション情報の読み込み
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
HotSwState ReadRomEmulationData(CardBootData *cbd) HotSwState ReadRomEmulationInfo(CardBootData *cbd)
{ {
u32 count=0; u32 count=0;
u32 temp; u32 temp;

View File

@ -94,7 +94,6 @@ HotSwState HOTSWi_RefreshBadBlock(u32 romMode);
#include <twl/ltdwram_begin.h> #include <twl/ltdwram_begin.h>
static char encrypt_object_key[] ATTRIBUTE_ALIGN(4) = "encryObj"; static char encrypt_object_key[] ATTRIBUTE_ALIGN(4) = "encryObj";
static char rom_emu_info[] ATTRIBUTE_ALIGN(4) = "TWLD";
static u16 s_RscLockID; static u16 s_RscLockID;
static u16 s_CardLockID; static u16 s_CardLockID;
@ -311,8 +310,7 @@ static HotSwState LoadCardData(void)
s_cbData.cardType = (s_cbData.id_nml & HOTSW_ROMID_1TROM_MASK) ? DS_CARD_TYPE_2 : DS_CARD_TYPE_1; s_cbData.cardType = (s_cbData.id_nml & HOTSW_ROMID_1TROM_MASK) ? DS_CARD_TYPE_2 : DS_CARD_TYPE_1;
{ {
u8 i; SYSMRomEmuInfo *romEmuInfo = (void *)s_cbData.romEmuBuf;
u8 *romEmuInf = (u8 *)s_cbData.romEmuBuf;
// バナーリードが完了して、フラグ処理が終わるまでARM9と排他制御する // バナーリードが完了して、フラグ処理が終わるまでARM9と排他制御する
LockHotSwRsc(&SYSMi_GetWork()->lockCardRsc); LockHotSwRsc(&SYSMi_GetWork()->lockCardRsc);
@ -321,19 +319,27 @@ static HotSwState LoadCardData(void)
state = s_funcTable[s_cbData.cardType].ReadBootSegment_N(&s_cbData); state = s_funcTable[s_cbData.cardType].ReadBootSegment_N(&s_cbData);
retval = (retval == HOTSW_SUCCESS) ? state : retval; retval = (retval == HOTSW_SUCCESS) ? state : retval;
// Romエミュレーション情報を取得 // ARM9/7で不整合が発生しないようにRomエミュレーション情報ロードは初回のみ
state = ReadRomEmulationData(&s_cbData); if ( ! SYSMi_GetWork()->flags.hotsw.is1stCardChecked )
retval = (retval == HOTSW_SUCCESS) ? state : retval; {
// Romエミュレーション情報を取得
state = ReadRomEmulationInfo(&s_cbData);
retval = (retval == HOTSW_SUCCESS) ? state : retval;
// 取得したRomエミュレーション情報を比較 // 取得したRomエミュレーション情報を比較
s_cbData.debuggerFlg = TRUE; s_cbData.debuggerFlg = TRUE;
for(i=0; i<4; i++){ if ( romEmuInfo->magic_code != SYSM_ROMEMU_INFO_MAGIC_CODE ){
if ( rom_emu_info[i] != romEmuInf[i] ){
s_cbData.debuggerFlg = FALSE; s_cbData.debuggerFlg = FALSE;
break; }
} }
}
if(s_cbData.debuggerFlg){ // 初回のRomエミュレーション情報を使用
if(s_cbData.debuggerFlg &&
#ifndef DEBUG_USED_CARD_SLOT_B_
romEmuInfo->isEnableSlot1){
#else
romEmuInfo->isEnableSlot2){
#endif
OS_PutString("Read Debugger\n"); OS_PutString("Read Debugger\n");
s_cbData.cardType = ROM_EMULATION; s_cbData.cardType = ROM_EMULATION;
s_cbData.gameCommondParam = s_cbData.pBootSegBuf->rh.s.game_cmd_param & ~SCRAMBLE_MASK; s_cbData.gameCommondParam = s_cbData.pBootSegBuf->rh.s.game_cmd_param & ~SCRAMBLE_MASK;