From 4a115a8dd483d63d30533aa0d50daa60e4d5948c Mon Sep 17 00:00:00 2001 From: "(no author)" <(no author)@b08762b0-b915-fc4b-9d8c-17b2551a87ff> Date: Thu, 20 Dec 2007 08:02:56 +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=EF=BC=88=E3=83=87=E3=83=90?= =?UTF-8?q?=E3=83=83=E3=82=B0=E4=B8=AD=EF=BC=89?= 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@387 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../hotsw/ARM7/include/hotswTypes.h | 8 ++--- .../libraries_sysmenu/hotsw/ARM7/src/hotsw.c | 34 +++++++++++-------- 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/build/libraries_sysmenu/hotsw/ARM7/include/hotswTypes.h b/build/libraries_sysmenu/hotsw/ARM7/include/hotswTypes.h index 4600c466..bda505f3 100644 --- a/build/libraries_sysmenu/hotsw/ARM7/include/hotswTypes.h +++ b/build/libraries_sysmenu/hotsw/ARM7/include/hotswTypes.h @@ -242,10 +242,10 @@ typedef struct CardBootData{ u32 arm9LtdSize; u32 arm7LtdSize; - u32 *arm9Stc; - u32 *arm7Stc; - u32 *arm9Ltd; - u32 *arm7Ltd; + u32 arm9Stc; + u32 arm7Stc; + u32 arm9Ltd; + u32 arm7Ltd; BOOL twlFlg; diff --git a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c index 8f1e7151..feb6eda7 100644 --- a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c +++ b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c @@ -218,6 +218,7 @@ BOOL HOTSW_Boot(void) // Type2の場合 ReadRomEmulationData_DSType2(&s_cbData); } + OS_TPrintf("Rom Emulation Data : 0x%08x\n",s_cbData.romEmuBuf[0]); // ROMヘッダCRCを算出してチェック。NintendoロゴCRCも確認。 SYSMi_GetWork()->cardHeaderCrc16_bak = SVC_GetCRC16( 65535, s_cbData.pBootSegBuf, 0x015e ); @@ -340,24 +341,25 @@ void HOTSW_LoadStaticModule(void) OS_TPrintf(" - Arm9 Static Module Loading...\n"); + s_cbData.arm9Stc = (u32)s_cbData.pBootSegBuf->rh.s.main_ram_address; + // 配置先と再配置情報を取得 - SYSM_CheckLoadRegionAndSetRelocateInfo( ARM9_STATIC, s_cbData.arm9Stc, s_cbData.pBootSegBuf->rh.s.main_size, &SYSMi_GetWork()->romRelocateInfo[ARM9_STATIC] , FALSE); + 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, - s_cbData.arm9Stc + SECURE_SEGMENT_SIZE, + (u32 *)(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"); + s_cbData.arm7Stc = (u32)s_cbData.pBootSegBuf->rh.s.sub_ram_address; + // 配置先と再配置情報を取得 - SYSM_CheckLoadRegionAndSetRelocateInfo( ARM7_STATIC, s_cbData.arm7Stc, s_cbData.pBootSegBuf->rh.s.sub_size, &SYSMi_GetWork()->romRelocateInfo[ARM7_STATIC] , FALSE); + 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, - s_cbData.arm7Stc, + (u32 *)s_cbData.arm7Stc, s_cbData.pBootSegBuf->rh.s.sub_size); // TWLでのみロード @@ -365,26 +367,30 @@ 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"); + s_cbData.arm9Ltd = (u32)s_cbData.pBootSegBuf->rh.s.main_ltd_ram_address; + // 配置先と再配置情報を取得 - SYSM_CheckLoadRegionAndSetRelocateInfo( ARM9_LTD_STATIC, s_cbData.arm9Ltd, s_cbData.pBootSegBuf->rh.s.main_ltd_size, &SYSMi_GetWork()->romRelocateInfo[ARM9_LTD_STATIC] , TRUE); + 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, + (u32 *)s_cbData.arm9Ltd, 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, - s_cbData.arm9Ltd, - s_cbData.pBootSegBuf->rh.s.main_ltd_size); + s_funcTable[s_cbData.cardType].ReadPage_G(s_cbData.pBootSegBuf->rh.s.main_ltd_rom_offset + SECURE_SEGMENT_SIZE, + (u32 *)(s_cbData.arm9Ltd + SECURE_SEGMENT_SIZE), + s_cbData.pBootSegBuf->rh.s.main_ltd_size - size); } OS_TPrintf(" - Arm7 Ltd. Static Module Loading...\n"); + s_cbData.arm7Ltd = (u32)s_cbData.pBootSegBuf->rh.s.sub_ltd_ram_address; + // 配置先と再配置情報を取得 - SYSM_CheckLoadRegionAndSetRelocateInfo( ARM7_LTD_STATIC, s_cbData.arm7Ltd, s_cbData.pBootSegBuf->rh.s.sub_ltd_size, &SYSMi_GetWork()->romRelocateInfo[ARM7_LTD_STATIC], TRUE); + 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, - s_cbData.arm7Ltd, + (u32 *)s_cbData.arm7Ltd, s_cbData.pBootSegBuf->rh.s.sub_ltd_size); } }