From 8fd77756b214f483b2161b2e8716f0a1ba3cd024 Mon Sep 17 00:00:00 2001 From: "(no author)" <(no author)@b08762b0-b915-fc4b-9d8c-17b2551a87ff> Date: Thu, 20 Dec 2007 05:47:00 +0000 Subject: [PATCH] =?UTF-8?q?(=E6=9B=B4=E6=96=B0:Akabane=20Jumpei)=20?= =?UTF-8?q?=E5=B8=B8=E9=A7=90=E3=83=A2=E3=82=B8=E3=83=A5=E3=83=BC=E3=83=AB?= =?UTF-8?q?=E3=81=AE=E9=85=8D=E7=BD=AE=E5=85=88=E3=82=92=E3=80=80SYSM=5FCh?= =?UTF-8?q?eckLoadRegionAndSetRelocateInfo=E3=80=80=E3=82=92=E4=BD=BF?= =?UTF-8?q?=E3=81=A3=E3=81=A6=E5=8F=96=E5=BE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@385 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../libraries_sysmenu/hotsw/ARM7/src/hotsw.c | 38 +++++++++++++++---- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c index 189f9b54..8f1e7151 100644 --- a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c +++ b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c @@ -103,6 +103,9 @@ void HOTSW_Init(void) // Counter-Aの値を設定 reg_MI_MC2 = 0xc8; +#else + // PXI経由でARM7にチャッタリングカウンタ・カウンタAの値を設定してもらう。設定されるまで待つ。 + #endif // カードブート用構造体の初期化 @@ -155,9 +158,14 @@ BOOL HOTSW_Boot(void) OSTick start = OS_GetTick(); OS_TPrintf("---------------- Card Boot Start ---------------\n"); +#ifdef SDK_ARM7 // カード電源ON McPowerOn(); - +#else // SDK_ARM9 + // ARM7にPXI経由でカード電源ONをお願い。ONになるまで待つ。 + +#endif + // セキュア領域の読み込みセグメント先頭番号(Segment4 〜 Segment7) s_cbData.secureSegNum = 4; @@ -234,6 +242,7 @@ BOOL HOTSW_Boot(void) OS_TPrintf("TWL Card.\n"); s_cbData.twlFlg = TRUE; } + // Key Table初期化 GCDm_MakeBlowfishTableDS(&s_cbData.keyTable, &s_pBootSegBuffer->rh.s, s_cbData.keyBuf, 8); @@ -268,7 +277,7 @@ BOOL HOTSW_Boot(void) // 常駐モジュール残りを指定先に転送 HOTSW_LoadStaticModule(); - + // デバッグ出力 ShowRomHeaderData(); } @@ -328,17 +337,27 @@ void HOTSW_LoadStaticModule(void) SYSMi_GetWork()->is1stCardChecked = TRUE; } #endif + OS_TPrintf(" - Arm9 Static Module Loading...\n"); + // 配置先と再配置情報を取得 + SYSM_CheckLoadRegionAndSetRelocateInfo( ARM9_STATIC, s_cbData.arm9Stc, s_cbData.pBootSegBuf->rh.s.main_size, &SYSMi_GetWork()->romRelocateInfo[ARM9_STATIC] , FALSE); + // Arm9の常駐モジュール残りを指定先に転送 s_funcTable[s_cbData.cardType].ReadPage_G(s_cbData.pBootSegBuf->rh.s.main_rom_offset + SECURE_SEGMENT_SIZE, - (u32 *)((u32)s_cbData.pBootSegBuf->rh.s.main_ram_address + SECURE_SEGMENT_SIZE), + s_cbData.arm9Stc + SECURE_SEGMENT_SIZE, s_cbData.pBootSegBuf->rh.s.main_size - SECURE_SEGMENT_SIZE); +/* s_funcTable[s_cbData.cardType].ReadPage_G(s_cbData.pBootSegBuf->rh.s.main_rom_offset + SECURE_SEGMENT_SIZE, + (u32 *)((u32)s_cbData.pBootSegBuf->rh.s.main_ram_address + SECURE_SEGMENT_SIZE), + s_cbData.pBootSegBuf->rh.s.main_size - SECURE_SEGMENT_SIZE);*/ OS_TPrintf(" - Arm7 Static Module Loading...\n"); + // 配置先と再配置情報を取得 + SYSM_CheckLoadRegionAndSetRelocateInfo( ARM7_STATIC, s_cbData.arm7Stc, s_cbData.pBootSegBuf->rh.s.sub_size, &SYSMi_GetWork()->romRelocateInfo[ARM7_STATIC] , FALSE); + // Arm7の常駐モジュールを指定先に転送 s_funcTable[s_cbData.cardType].ReadPage_G(s_cbData.pBootSegBuf->rh.s.sub_rom_offset, - (u32 *)((u32)s_cbData.pBootSegBuf->rh.s.sub_ram_address), + s_cbData.arm7Stc, s_cbData.pBootSegBuf->rh.s.sub_size); // TWLでのみロード @@ -346,21 +365,26 @@ void HOTSW_LoadStaticModule(void) u32 size = ( s_cbData.pBootSegBuf->rh.s.main_ltd_size < SECURE_SEGMENT_SIZE ) ? s_cbData.pBootSegBuf->rh.s.main_ltd_size : SECURE_SEGMENT_SIZE; OS_TPrintf(" - Arm9 Ltd. Static Module Loading...\n"); + // 配置先と再配置情報を取得 + SYSM_CheckLoadRegionAndSetRelocateInfo( ARM9_LTD_STATIC, s_cbData.arm9Ltd, s_cbData.pBootSegBuf->rh.s.main_ltd_size, &SYSMi_GetWork()->romRelocateInfo[ARM9_LTD_STATIC] , TRUE); + // Arm9の常駐モジュールを指定先に転送(※TWLカード対応していないので、注意!!) - s_funcTable[s_cbData.cardType].ReadPage_G(s_cbData.pBootSegBuf->rh.s.main_ltd_rom_offset, (u32 *)SYSM_CARD_TWL_SECURE_BUF, size); if( s_cbData.pBootSegBuf->rh.s.main_ltd_size > SECURE_SEGMENT_SIZE ) { s_funcTable[s_cbData.cardType].ReadPage_G(s_cbData.pBootSegBuf->rh.s.main_ltd_rom_offset, - (u32 *)((u32)s_cbData.pBootSegBuf->rh.s.main_ltd_ram_address), + s_cbData.arm9Ltd, s_cbData.pBootSegBuf->rh.s.main_ltd_size); } OS_TPrintf(" - Arm7 Ltd. Static Module Loading...\n"); + // 配置先と再配置情報を取得 + SYSM_CheckLoadRegionAndSetRelocateInfo( ARM7_LTD_STATIC, s_cbData.arm7Ltd, s_cbData.pBootSegBuf->rh.s.sub_ltd_size, &SYSMi_GetWork()->romRelocateInfo[ARM7_LTD_STATIC], TRUE); + // Arm7の常駐モジュールを指定先に転送 s_funcTable[s_cbData.cardType].ReadPage_G(s_cbData.pBootSegBuf->rh.s.sub_ltd_rom_offset, - (u32 *)((u32)s_cbData.pBootSegBuf->rh.s.sub_ltd_ram_address), + s_cbData.arm7Ltd, s_cbData.pBootSegBuf->rh.s.sub_ltd_size); } }