From 696d3641e2a6d7b75dcdd3befbf89f26ceda62de Mon Sep 17 00:00:00 2001 From: yoshida_teruhisa Date: Fri, 21 Dec 2007 01:06:31 +0000 Subject: [PATCH] =?UTF-8?q?=E3=82=BB=E3=82=AD=E3=83=A5=E3=82=A2=E9=A0=98?= =?UTF-8?q?=E5=9F=9F=E3=82=92=E5=86=8D=E9=85=8D=E7=BD=AE=E3=81=99=E3=82=8B?= =?UTF-8?q?=E9=9A=9B=E3=80=81rom=E3=81=AE=E5=86=8D=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E6=83=85=E5=A0=B1=E3=82=92=E8=80=83=E6=85=AE=E3=81=99=E3=82=8B?= =?UTF-8?q?=E3=82=88=E3=81=86=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@392 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../sysmenu/ARM9/src/sysmenu_lib.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c index 9f38fb22..ce44c53d 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c @@ -693,18 +693,30 @@ void SYSM_StartLoadTitle( TitleProperty *pBootTitle ) static void SYSMi_Relocate( void ) { u32 size; + u32 *dest = SYSM_GetCardRomHeader()->main_ram_address; // NTRセキュア領域の再配置 DC_InvalidateRange( (void *)SYSM_CARD_NTR_SECURE_BUF, SECURE_AREA_SIZE ); // キャッシュケア size = ( SYSM_GetCardRomHeader()->main_size < SECURE_AREA_SIZE ) ? SYSM_GetCardRomHeader()->main_size : SECURE_AREA_SIZE; - MI_CpuCopyFast( (void *)SYSM_CARD_NTR_SECURE_BUF, SYSM_GetCardRomHeader()->main_ram_address, size ); + // romの再配置情報を参照して、セキュア領域の再配置先を変更する必要が無いか調べる + if( SYSMi_GetWork()->romRelocateInfo[ARM9_STATIC].src != NULL ) + { + dest = (u32 *)SYSMi_GetWork()->romRelocateInfo[ARM9_STATIC].src; + } + MI_CpuCopyFast( (void *)SYSM_CARD_NTR_SECURE_BUF, dest, size ); if( SYSM_GetCardRomHeader()->platform_code & PLATFORM_CODE_FLAG_TWL ) { // TWLセキュア領域の再配置 + dest = SYSM_GetCardRomHeader()->main_ltd_ram_address; DC_InvalidateRange( (void *)SYSM_CARD_TWL_SECURE_BUF, SECURE_AREA_SIZE ); // キャッシュケア size = ( SYSM_GetCardRomHeader()->main_ltd_size < SECURE_AREA_SIZE ) ? SYSM_GetCardRomHeader()->main_ltd_size : SECURE_AREA_SIZE; - MI_CpuCopyFast( (void *)SYSM_CARD_TWL_SECURE_BUF, SYSM_GetCardRomHeader()->main_ltd_ram_address, size ); + // romの再配置情報を参照して、セキュア領域の再配置先を変更する必要が無いか調べる + if( SYSMi_GetWork()->romRelocateInfo[ARM9_LTD_STATIC].src != NULL ) + { + dest = (u32 *)SYSMi_GetWork()->romRelocateInfo[ARM9_LTD_STATIC].src; + } + MI_CpuCopyFast( (void *)SYSM_CARD_TWL_SECURE_BUF, dest, size ); // TWL-ROMヘッダ情報の再配置 MI_CpuCopyFast( (void *)SYSM_CARD_ROM_HEADER_BUF, (void *)HW_TWL_ROM_HEADER_BUF, SYSM_CARD_ROM_HEADER_SIZE ); MI_CpuCopyFast( (void *)SYSM_CARD_ROM_HEADER_BUF, (void *)HW_ROM_HEADER_BUF, HW_ROM_HEADER_BUF_END - HW_ROM_HEADER_BUF );