mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
モジュール読み込みサイズの制限を32バイトアライメントに変更
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1085 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
7ecf7d7e2a
commit
a3c534841b
@ -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{
|
||||
|
||||
@ -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 ) )
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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で起動メディアは判定できる?)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user