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);
// デバッガの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 temp;

View File

@ -94,7 +94,6 @@ HotSwState HOTSWi_RefreshBadBlock(u32 romMode);
#include <twl/ltdwram_begin.h>
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_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;
{
u8 i;
u8 *romEmuInf = (u8 *)s_cbData.romEmuBuf;
SYSMRomEmuInfo *romEmuInfo = (void *)s_cbData.romEmuBuf;
// バナーリードが完了して、フラグ処理が終わるまでARM9と排他制御する
LockHotSwRsc(&SYSMi_GetWork()->lockCardRsc);
@ -321,19 +319,27 @@ static HotSwState LoadCardData(void)
state = s_funcTable[s_cbData.cardType].ReadBootSegment_N(&s_cbData);
retval = (retval == HOTSW_SUCCESS) ? state : retval;
// Romエミュレーション情報を取得
state = ReadRomEmulationData(&s_cbData);
retval = (retval == HOTSW_SUCCESS) ? state : retval;
// ARM9/7で不整合が発生しないようにRomエミュレーション情報ロードは初回のみ
if ( ! SYSMi_GetWork()->flags.hotsw.is1stCardChecked )
{
// Romエミュレーション情報を取得
state = ReadRomEmulationInfo(&s_cbData);
retval = (retval == HOTSW_SUCCESS) ? state : retval;
// 取得したRomエミュレーション情報を比較
s_cbData.debuggerFlg = TRUE;
for(i=0; i<4; i++){
if ( rom_emu_info[i] != romEmuInf[i] ){
// 取得したRomエミュレーション情報を比較
s_cbData.debuggerFlg = TRUE;
if ( romEmuInfo->magic_code != SYSM_ROMEMU_INFO_MAGIC_CODE ){
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");
s_cbData.cardType = ROM_EMULATION;
s_cbData.gameCommondParam = s_cbData.pBootSegBuf->rh.s.game_cmd_param & ~SCRAMBLE_MASK;