From a3c534841b906c19c9fba6fbc96f9782b3b3567f Mon Sep 17 00:00:00 2001 From: yoshida_teruhisa Date: Wed, 9 Apr 2008 00:23:16 +0000 Subject: [PATCH] =?UTF-8?q?=E3=83=A2=E3=82=B8=E3=83=A5=E3=83=BC=E3=83=AB?= =?UTF-8?q?=E8=AA=AD=E3=81=BF=E8=BE=BC=E3=81=BF=E3=82=B5=E3=82=A4=E3=82=BA?= =?UTF-8?q?=E3=81=AE=E5=88=B6=E9=99=90=E3=82=9232=E3=83=90=E3=82=A4?= =?UTF-8?q?=E3=83=88=E3=82=A2=E3=83=A9=E3=82=A4=E3=83=A1=E3=83=B3=E3=83=88?= =?UTF-8?q?=E3=81=AB=E5=A4=89=E6=9B=B4?= 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@1085 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c | 10 +++++----- .../reloc_info/common/src/reloc_info.c | 2 +- build/libraries_sysmenu/sysmenu/ARM9/src/title.c | 4 ++-- include/sysmenu/sysmenu_lib/common/sysmenu_api.h | 2 ++ 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c index 71edadea..b4d6a4a7 100644 --- a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c +++ b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c @@ -767,7 +767,7 @@ static HotSwState LoadStaticModule(void) s_cbData.arm9Stc = (u32)s_cbData.pBootSegBuf->rh.s.main_ram_address; if(SYSM_CheckLoadRegionAndSetRelocateInfo( ARM9_STATIC, &s_cbData.arm9Stc, s_cbData.pBootSegBuf->rh.s.main_size, &SYSMi_GetWork()->romRelocateInfo[ARM9_STATIC] , s_cbData.twlFlg)){ if(arm9StcEnd > SECURE_SEGMENT_END){ - state = ReadPageGame(&s_cbData, s_cbData.pBootSegBuf->rh.s.main_rom_offset + SECURE_SEGMENT_SIZE, (u32 *)(s_cbData.arm9Stc + SECURE_SEGMENT_SIZE), MATH_ROUNDUP( arm9StcEnd, 16 ) - SECURE_SEGMENT_END); + state = ReadPageGame(&s_cbData, s_cbData.pBootSegBuf->rh.s.main_rom_offset + SECURE_SEGMENT_SIZE, (u32 *)(s_cbData.arm9Stc + SECURE_SEGMENT_SIZE), MATH_ROUNDUP( arm9StcEnd, SYSM_ALIGNMENT_LOAD_MODULE ) - SECURE_SEGMENT_END); retval = (retval == HOTSW_SUCCESS) ? state : retval; } } @@ -781,7 +781,7 @@ static HotSwState LoadStaticModule(void) // 配置先と再配置情報を取得 & Arm7の常駐モジュールを指定先に転送 s_cbData.arm7Stc = (u32)s_cbData.pBootSegBuf->rh.s.sub_ram_address; if(SYSM_CheckLoadRegionAndSetRelocateInfo( ARM7_STATIC, &s_cbData.arm7Stc, s_cbData.pBootSegBuf->rh.s.sub_size, &SYSMi_GetWork()->romRelocateInfo[ARM7_STATIC], s_cbData.twlFlg)){ - state = ReadPageGame(&s_cbData, s_cbData.pBootSegBuf->rh.s.sub_rom_offset, (u32 *)s_cbData.arm7Stc, MATH_ROUNDUP( s_cbData.pBootSegBuf->rh.s.sub_size, 16 ) ); + state = ReadPageGame(&s_cbData, s_cbData.pBootSegBuf->rh.s.sub_rom_offset, (u32 *)s_cbData.arm7Stc, MATH_ROUNDUP( s_cbData.pBootSegBuf->rh.s.sub_size, SYSM_ALIGNMENT_LOAD_MODULE ) ); retval = (retval == HOTSW_SUCCESS) ? state : retval; } else{ @@ -800,7 +800,7 @@ static HotSwState LoadStaticModule(void) if(SYSM_CheckLoadRegionAndSetRelocateInfo( ARM9_LTD_STATIC, &s_cbData.arm9Ltd, s_cbData.pBootSegBuf->rh.s.main_ltd_size, &SYSMi_GetWork()->romRelocateInfo[ARM9_LTD_STATIC] , TRUE)){ if(!s_cbData.isLoadTypeTwl){ // Secure2領域読み - state = ReadPageGame(&s_cbData, s_cbData.pBootSegBuf->rh.s.main_ltd_rom_offset, (u32 *)SYSM_CARD_TWL_SECURE_BUF, MATH_ROUNDUP( size, 16 )); + state = ReadPageGame(&s_cbData, s_cbData.pBootSegBuf->rh.s.main_ltd_rom_offset, (u32 *)SYSM_CARD_TWL_SECURE_BUF, MATH_ROUNDUP( size, SYSM_ALIGNMENT_LOAD_MODULE )); retval = (retval == HOTSW_SUCCESS) ? state : retval; } @@ -808,7 +808,7 @@ static HotSwState LoadStaticModule(void) 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), - MATH_ROUNDUP( s_cbData.pBootSegBuf->rh.s.main_ltd_size, 16 ) - size); + MATH_ROUNDUP( s_cbData.pBootSegBuf->rh.s.main_ltd_size, SYSM_ALIGNMENT_LOAD_MODULE ) - size); retval = (retval == HOTSW_SUCCESS) ? state : retval; } } @@ -823,7 +823,7 @@ static HotSwState LoadStaticModule(void) // 配置先と再配置情報を取得 & Arm7の常駐モジュールを指定先に転送 s_cbData.arm7Ltd = (u32)s_cbData.pBootSegBuf->rh.s.sub_ltd_ram_address; 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, MATH_ROUNDUP( s_cbData.pBootSegBuf->rh.s.sub_ltd_size, 16 ) ); + state = ReadPageGame(&s_cbData, s_cbData.pBootSegBuf->rh.s.sub_ltd_rom_offset, (u32 *)s_cbData.arm7Ltd, MATH_ROUNDUP( s_cbData.pBootSegBuf->rh.s.sub_ltd_size, SYSM_ALIGNMENT_LOAD_MODULE ) ); retval = (retval == HOTSW_SUCCESS) ? state : retval; } else{ diff --git a/build/libraries_sysmenu/reloc_info/common/src/reloc_info.c b/build/libraries_sysmenu/reloc_info/common/src/reloc_info.c index f53d15d6..1a04acbe 100644 --- a/build/libraries_sysmenu/reloc_info/common/src/reloc_info.c +++ b/build/libraries_sysmenu/reloc_info/common/src/reloc_info.c @@ -72,7 +72,7 @@ static BOOL SYSMi_CheckLoadRegionAndSetRelocateInfoEx ( u32 *dest, u32 length, RomSegmentRange default_region, u32 *check_dest, Relocate_Info *info ) { u32 ori_len = length; - length = MATH_ROUNDUP( length, 16 );// AES暗号化領域の関係で、再配置必要性のチェックに使うlengthは16バイトアライメントに補正 + length = MATH_ROUNDUP( length, SYSM_ALIGNMENT_LOAD_MODULE );// AES暗号化領域の関係で、再配置必要性のチェックに使うlengthは32バイトアライメントに補正 MI_CpuClearFast( info, sizeof(Relocate_Info) ); if( default_region.end - default_region.start < length ) return FALSE;// サイズオーバー if( !( default_region.start <= *dest && *dest + length <= default_region.end ) ) diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c index 1caaa3ce..877427b5 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c @@ -483,7 +483,7 @@ OS_TPrintf("RebootSystem failed: cant read file(%p, %d, %d, %d)\n", &s_authcode, for (i = region_header; i < region_max; ++i) { - u32 len = MATH_ROUNDUP( length[i], 16 );// AES暗号化領域の関係で、ロードサイズは16バイトアライメントに補正 + u32 len = MATH_ROUNDUP( length[i], SYSM_ALIGNMENT_LOAD_MODULE );// AES暗号化領域の関係で、ロードサイズは32バイトアライメントに補正 if ( !isTwlApp && i >= region_arm9_twl ) continue;// nitroでは読み込まない領域 @@ -675,7 +675,7 @@ static AuthResult SYSMi_AuthenticateTWLHeader( TitleProperty *pBootTitle ) }else { // 開発版 key = g_devPubKey[keynum]; - // デバッガが有効ならば、ハッシュチェックスルーフラグを立てる + // デバッガが有効でTLF読み込みならば、ハッシュチェックスルーフラグを立てる if(SYSMi_GetWork()->flags.hotsw.isOnDebugger && SYSMi_GetWork()->romEmuInfo.isTlfRom ) { b_dev = TRUE; diff --git a/include/sysmenu/sysmenu_lib/common/sysmenu_api.h b/include/sysmenu/sysmenu_lib/common/sysmenu_api.h index 7c83707f..0e5f9f52 100644 --- a/include/sysmenu/sysmenu_lib/common/sysmenu_api.h +++ b/include/sysmenu/sysmenu_lib/common/sysmenu_api.h @@ -48,6 +48,8 @@ extern "C" { #define SYSM_MOUNT_INFO_SIZE (0x400 - OS_MOUNT_PATH_LEN) #define SYSM_LAUNCHER_VER 1 // ランチャーバージョン(SDK側でランチャーに絡む処理の判定用) +#define SYSM_ALIGNMENT_LOAD_MODULE 32 // モジュールをsrlから読み込む際のアライメント(AESおよびAESで使うDMAの仕様による) + // タイトル情報 typedef struct TitleProperty { // この情報は、ランチャー時には認証通ってないけど、起動時には認証通すので大丈夫だろう。 NAMTitleId titleID; // タイトルID(TitleID_Hiで起動メディアは判定できる?)