(更新:Akabane Jumpei)

・ランチャーを起動後、デバッガがエミュレートしているRomを読み込んで、再度ランチャーが起動できる。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@459 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
(no author) 2008-01-11 09:44:34 +00:00
parent 4d8713e702
commit b67c2b68f8
2 changed files with 11 additions and 67 deletions

View File

@ -198,7 +198,13 @@ BOOL HOTSW_Boot(void)
BOOL retval = TRUE;
OSTick start = OS_GetTick();
// スロットがスワップされてたら元に戻す。
if(reg_MI_MC1 & 0x8000){
reg_MI_MC1 = reg_MI_MC1 & 0xff;
OS_TPrintf("Slot Swap\n");
}
OS_TPrintf("---------------- Card Boot Start ---------------\n");
#ifdef SDK_ARM7
// カード電源ON
@ -346,7 +352,7 @@ BOOL HOTSW_Boot(void)
// *(u32 *)HW_BOOT_CHECK_INFO_BUF = s_cbData.id_gam;
// *(u32 *)HW_RED_RESERVED = s_cbData.id_gam;
SYSMi_GetWork()->nCardID = s_cbData.id_gam;
OS_TPrintf("-----------------------------------------------\n\n");
}
else{
@ -581,10 +587,6 @@ static void LoadTable(void)
// MCCNT0 レジスタ設定 (E = 1 I = 1 SEL = 0に)
reg_HOTSW_MCCNT0 = (u16)((reg_HOTSW_MCCNT0 & 0x0fff) | 0xc000);
/* // MCCNT1 レジスタ設定 (START = 1 W/R = 0 PC = 101(16ページ) latency1 = 0(必要ないけど) に)
reg_HOTSW_MCCNT1 = (u32)((reg_HOTSW_MCCNT1 & CNT1_MSK(0,0,1,0, 0,0, 1,0, 0, 0,0,0, 0)) |
CNT1_FLD(1,0,0,0, 0,5, 0,0, 0, 0,0,0, 0));*/
// MCCNT1 レジスタ設定 (START = 1 W/R = 0 PC = 101(16ページ) latency1 = 0(必要ないけど) に)
reg_HOTSW_MCCNT1 = START_MASK | PC_MASK & (0x5 << PC_SHIFT);
@ -874,6 +876,8 @@ static void McThread(void *arg)
* ----------------------------------------------------------------- */
static void McPowerOn(void)
{
OS_TPrintf("Slot State : %08x\n", reg_MI_MC1);
// SCFG_MC1 の Slot Status の M1,M0 を 11 にする
reg_MI_MC1 = (u32)((reg_MI_MC1 & (~SLOT_STATUS_MODE_SELECT_MSK)) | 0xc0);
// 10ms待ち
@ -900,7 +904,7 @@ static void McPowerOn(void)
// 10ms待ち
OS_Sleep(10);
OS_TPrintf("MC Power ON\n");
OS_TPrintf("Slot Power ON\n");
}
/*---------------------------------------------------------------------------*

View File

@ -75,24 +75,6 @@ void ReadBootSegNormal_ROMEMU(CardBootData *cbd)
page++;
}
/*
// NewDMA転送の準備
HOTSW_NDmaCopy_Card( HOTSW_DMA_NO, (u32 *)HOTSW_MCD1, &cbd->pBootSegBuf->word, BOOT_SEGMENT_SIZE );
// MCCMD レジスタ設定
reg_HOTSW_MCCMD0 = 0x00000000;
reg_HOTSW_MCCMD1 = 0x00000000;
// MCCNT0 レジスタ設定 (E = 1 I = 1 SEL = 0に)
reg_HOTSW_MCCNT0 = (u16)((reg_HOTSW_MCCNT0 & 0x0fff) | 0xc000);
// MCCNT1 レジスタ設定 (START = 1 PC_MASK PC = 100(8ページリード)に latency1 = 0xd)
reg_HOTSW_MCCNT1 = START_MASK | CT_MASK | PC_MASK & (0x4 << PC_SHIFT) | (0xd & LATENCY1_MASK);
// カードデータ転送終了割り込みが起こるまで寝る(割り込みハンドラの中で起こされる)
OS_SleepThread(NULL);
*/
}
/*---------------------------------------------------------------------------*
@ -204,51 +186,9 @@ void ReadSegSecure_ROMEMU(CardBootData *cbd)
while(reg_HOTSW_MCCNT1 & START_FLG_MASK){
while(!(reg_HOTSW_MCCNT1 & READY_FLG_MASK)){}
*(cbd->pSecureSegBuf + j++) = reg_HOTSW_MCD1;
// OS_TPrintf("Secure Data Address : %08x\n", (cbd->pSecureSegBuf + j));
/* OS_TPrintf("%02x ",reg_HOTSW_MCD1);
if(!(n++ % 0xf)){
OS_PutString("\n");
}*/
}
page++;
}
/* u64 segNum = 4;
u64 vae = cbd->vae;
GCDCmd64 cndLE, cndBE;
// NewDMA転送の準備
HOTSW_NDmaCopy_Card( HOTSW_DMA_NO, (u32 *)HOTSW_MCD1, cbd->pSecureSegBuf, SECURE_SEGMENT_SIZE );
// コマンド構造体初期化
MI_CpuClear8(&cndLE, sizeof(GCDCmd64));
// コマンド作成
cndLE.dw = 0x20 << 33;
// ビッグエンディアンに直す(暗号化後)
cndBE.b[7] = cndLE.b[0];
cndBE.b[6] = cndLE.b[1];
cndBE.b[5] = cndLE.b[2];
cndBE.b[4] = cndLE.b[3];
cndBE.b[3] = cndLE.b[4];
cndBE.b[2] = cndLE.b[5];
cndBE.b[1] = cndLE.b[6];
cndBE.b[0] = cndLE.b[7];
// MCCMD レジスタ設定
reg_HOTSW_MCCMD0 = *(u32*)cndBE.b;
reg_HOTSW_MCCMD1 = *(u32*)&cndBE.b[4];
// MCCNT0 レジスタ設定 (E = 1 I = 1 SEL = 0に)
reg_HOTSW_MCCNT0 = (u16)((reg_HOTSW_MCCNT0 & 0x0fff) | 0xc000);
// MCCNT1 レジスタ設定 (START = 1 PC_MASK PC = 110(32ページリード)に latency1 = 0xd)
reg_HOTSW_MCCNT1 = START_MASK | CT_MASK | PC_MASK & (0x6 << PC_SHIFT) | (0xd & LATENCY1_MASK);
// カードデータ転送終了割り込みが起こるまで寝る(割り込みハンドラの中で起こされる)
OS_SleepThread(NULL);
*/
}
/*---------------------------------------------------------------------------*