ARM9からのメッセージでARM7でカードデータを読み出すときに、GameモードのIDチェックを行うコードを追加

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/branches/20080910_debug_dht_phase1@2473 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
(no author) 2008-09-10 10:10:07 +00:00
parent 0e81e6d409
commit e0827cccc8
3 changed files with 23 additions and 0 deletions

View File

@ -237,6 +237,7 @@ typedef enum HotSwState{
HOTSW_BUFFER_OVERRUN_ERROR,
HOTSW_MODE_ERROR,
HOTSW_ILLEGAL_CARD_ERROR,
HOTSW_GAMEMODE_ID_CHECK_ERROR,
HOTSW_UNEXPECTED_ERROR
} HotSwState;

View File

@ -144,6 +144,8 @@ static u16 s_bondingOp;
static u32 s_BootSegBufSize, s_SecureSegBufSize, s_Secure2SegBufSize;
static u32 s_gameID;
static BootSegmentData *s_pBootSegBuffer;
static u32 *s_pSecureSegBuffer;
static u32 *s_pSecure2SegBuffer;
@ -537,6 +539,9 @@ static HotSwState LoadCardData(void)
goto finalize;
}
else{
s_gameID = s_cbData.id_gam;
}
}
// バナーファイルの読み込み
@ -916,6 +921,11 @@ static void ReadCardData(u32 src, u32 dest, u32 size)
// カードのロック
CARD_LockRom(s_CardLockID);
ReadIDGame(&s_cbData);
if(s_cbData.id_gam != s_gameID){
state = HOTSW_GAMEMODE_ID_CHECK_ERROR;
}
while(size > 0 && state == HOTSW_SUCCESS){
// --- Boot Segment
if(src >= HOTSW_BOOTSEGMENT_AREA_OFS && src < HOTSW_KEYTABLE_AREA_OFS){
@ -974,6 +984,13 @@ static void ReadCardData(u32 src, u32 dest, u32 size)
dest += sendSize;
}
ReadIDGame(&s_cbData);
if(s_cbData.id_gam != s_gameID){
if(state == HOTSW_SUCCESS){
state = HOTSW_GAMEMODE_ID_CHECK_ERROR;
}
}
// カードのアンロック
CARD_UnlockRom(s_CardLockID);
@ -1002,6 +1019,10 @@ static void ReadCardData(u32 src, u32 dest, u32 size)
retval = CARD_READ_MODE_ERROR;
break;
case HOTSW_GAMEMODE_ID_CHECK_ERROR:
retval = CARD_READ_ID_CHECK_ERROR;
break;
default:
retval = CARD_READ_UNEXPECTED_ERROR;
break;

View File

@ -43,6 +43,7 @@ typedef enum CardDataReadState {
CARD_READ_BUFFER_OVERRUN_ERROR,
CARD_READ_MODE_ERROR,
CARD_READ_BUSY,
CARD_READ_ID_CHECK_ERROR,
CARD_READ_UNEXPECTED_ERROR
}
CardDataReadState;