From 735cc061c31a303004a3acd8a240652f828f93db Mon Sep 17 00:00:00 2001 From: "(no author)" <(no author)@b08762b0-b915-fc4b-9d8c-17b2551a87ff> Date: Wed, 12 Mar 2008 11:18:20 +0000 Subject: [PATCH] =?UTF-8?q?(=E6=9B=B4=E6=96=B0:Akabane=20Jumpei)=20?= =?UTF-8?q?=E3=83=BB=E6=8B=A1=E5=BC=B5Arm9=E5=B8=B8=E9=A7=90=E3=83=A2?= =?UTF-8?q?=E3=82=B8=E3=83=A5=E3=83=BC=E3=83=AB=E3=81=AE=E3=82=B5=E3=82=A4?= =?UTF-8?q?=E3=82=BA=E3=81=8CSecure2=E9=A0=98=E5=9F=9F=E5=86=85=E3=81=AB?= =?UTF-8?q?=E3=81=8A=E3=81=95=E3=81=BE=E3=81=A3=E3=81=A6=E3=81=84=E3=82=8B?= =?UTF-8?q?=E5=A0=B4=E5=90=88=E3=81=AB=E5=AF=BE=E5=BF=9C=20(Secure2?= =?UTF-8?q?=E9=A0=98=E5=9F=9F=E3=81=AB=E3=81=8A=E3=81=95=E3=81=BE=E3=81=A3?= =?UTF-8?q?=E3=81=A6=E3=81=84=E3=82=8B=E5=A0=B4=E5=90=88=E3=81=AFGame?= =?UTF-8?q?=E9=A0=98=E5=9F=9F=E8=AA=AD=E3=81=BF=E9=83=A8=E5=88=86=E3=82=92?= =?UTF-8?q?=E9=A3=9B=E3=81=B0=E3=81=99)?= 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@873 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../libraries_sysmenu/hotsw/ARM7/src/hotsw.c | 34 ++++++++++++------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c index a37bc66f..81397c74 100644 --- a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c +++ b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c @@ -637,16 +637,20 @@ static HotSwState LoadStaticModule(void) s_cbData.pBootSegBuf->rh.s.main_ltd_size : SECURE_SEGMENT_SIZE; s_cbData.arm9Ltd = (u32)s_cbData.pBootSegBuf->rh.s.main_ltd_ram_address; // 配置先と再配置情報を取得 & Arm9の常駐モジュールを指定先に転送(※TWLカード対応していないので、注意!!) - SYSM_CheckLoadRegionAndSetRelocateInfo( ARM9_LTD_STATIC, &s_cbData.arm9Ltd, s_cbData.pBootSegBuf->rh.s.main_ltd_size, &SYSMi_GetWork()->romRelocateInfo[ARM9_LTD_STATIC] , TRUE); - state = ReadPageGame(&s_cbData, s_cbData.pBootSegBuf->rh.s.main_ltd_rom_offset, (u32 *)SYSM_CARD_TWL_SECURE_BUF, size); - retval = (retval == HOTSW_SUCCESS) ? state : retval; - - if( s_cbData.pBootSegBuf->rh.s.main_ltd_size > SECURE_SEGMENT_SIZE ) { - state = ReadPageGame(&s_cbData, 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); - retval = (retval == HOTSW_SUCCESS) ? state : retval; - } + if(SYSM_CheckLoadRegionAndSetRelocateInfo( ARM9_LTD_STATIC, &s_cbData.arm9Ltd, s_cbData.pBootSegBuf->rh.s.main_ltd_size, &SYSMi_GetWork()->romRelocateInfo[ARM9_LTD_STATIC] , TRUE)){ + state = ReadPageGame(&s_cbData, s_cbData.pBootSegBuf->rh.s.main_ltd_rom_offset, (u32 *)SYSM_CARD_TWL_SECURE_BUF, size); + retval = (retval == HOTSW_SUCCESS) ? state : retval; + + if( s_cbData.pBootSegBuf->rh.s.main_ltd_size > SECURE_SEGMENT_SIZE ) { + state = ReadPageGame(&s_cbData, 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); + retval = (retval == HOTSW_SUCCESS) ? state : retval; + } + } + else{ + retval = HOTSW_BUFFER_OVERRUN_ERROR; + } if(retval != HOTSW_SUCCESS){ return retval; @@ -654,9 +658,13 @@ static HotSwState LoadStaticModule(void) s_cbData.arm7Ltd = (u32)s_cbData.pBootSegBuf->rh.s.sub_ltd_ram_address; // 配置先と再配置情報を取得 & Arm7の常駐モジュールを指定先に転送 - SYSM_CheckLoadRegionAndSetRelocateInfo( ARM7_LTD_STATIC, &s_cbData.arm7Ltd, s_cbData.pBootSegBuf->rh.s.sub_ltd_size, &SYSMi_GetWork()->romRelocateInfo[ARM7_LTD_STATIC], TRUE); - state = ReadPageGame(&s_cbData, s_cbData.pBootSegBuf->rh.s.sub_ltd_rom_offset, (u32 *)s_cbData.arm7Ltd, s_cbData.pBootSegBuf->rh.s.sub_ltd_size); - retval = (retval == HOTSW_SUCCESS) ? state : retval; + if(SYSM_CheckLoadRegionAndSetRelocateInfo( ARM7_LTD_STATIC, &s_cbData.arm7Ltd, s_cbData.pBootSegBuf->rh.s.sub_ltd_size, &SYSMi_GetWork()->romRelocateInfo[ARM7_LTD_STATIC], TRUE)){ + state = ReadPageGame(&s_cbData, s_cbData.pBootSegBuf->rh.s.sub_ltd_rom_offset, (u32 *)s_cbData.arm7Ltd, s_cbData.pBootSegBuf->rh.s.sub_ltd_size); + retval = (retval == HOTSW_SUCCESS) ? state : retval; + } + else{ + retval = HOTSW_BUFFER_OVERRUN_ERROR; + } if(retval != HOTSW_SUCCESS){ return retval;