mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
(更新: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:
parent
4d8713e702
commit
b67c2b68f8
@ -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");
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
|
||||
@ -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);
|
||||
*/
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
|
||||
Loading…
Reference in New Issue
Block a user