From 9c68d56d3f0aafad1c48f1ee2320d8b117bbbc64 Mon Sep 17 00:00:00 2001 From: yosiokat Date: Mon, 24 Mar 2008 08:43:24 +0000 Subject: [PATCH] =?UTF-8?q?TWL=E3=82=A2=E3=83=97=E3=83=AA=E3=83=96?= =?UTF-8?q?=E3=83=BC=E3=83=88=E6=99=82=E3=81=ABLCFG=E9=96=A2=E9=80=A3?= =?UTF-8?q?=E3=81=AE=E3=83=87=E3=83=BC=E3=82=BF=E3=82=92=E3=83=A1=E3=82=A4?= =?UTF-8?q?=E3=83=B3=E3=83=A1=E3=83=A2=E3=83=AA=E3=81=AB=E5=B1=95=E9=96=8B?= =?UTF-8?q?=E3=81=97=E3=81=A6=E3=81=8A=E3=81=8F=E3=82=88=E3=81=86=E5=A4=89?= =?UTF-8?q?=E6=9B=B4=E3=80=82?= 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@929 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../libraries_sysmenu/boot/ARM7/src/bootAPI.c | 2 +- .../libraries_sysmenu/boot/ARM9/src/bootAPI.c | 28 +++++++++++++++++-- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c b/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c index ccd04af1..61860f6a 100644 --- a/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c +++ b/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c @@ -56,7 +56,7 @@ static void BOOTi_CutAwayRegionList( u32 *regionlist, u32 start, u32 end ); static u32 twl_post_clear_list[POST_CLEAR_NUM_MAX + 1] = { - HW_PARAM_RESERVED_END, SYSM_OWN_ARM7_MMEM_ADDR, + HW_PARAM_WIRELESS_FIRMWARE_DATA_END, SYSM_OWN_ARM7_MMEM_ADDR, SYSM_OWN_ARM7_MMEM_ADDR_END, OS_BOOT_A9CODE_BUF, OS_BOOT_A9CODE_BUF + OS_BOOT_CODE_SIZE, SYSM_OWN_ARM9_MMEM_ADDR, SYSM_OWN_ARM9_MMEM_ADDR_END, HW_TWL_MAIN_MEM_SHARED, diff --git a/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c b/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c index c61b928b..15400dfe 100644 --- a/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c +++ b/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c @@ -38,7 +38,7 @@ // function's prototype---------------------------------------------- static void BOOTi_ClearREG_RAM( void ); -static void BOOTi_StartBOOT( void ); +static void BOOTi_CopyLCFGData( void ); // global variables-------------------------------------------------- @@ -63,7 +63,7 @@ void BOOT_Ready( void ) ROM_Header *dh; // DS互換ROMヘッダ BOOL isNtrMode; int i; - + // エントリアドレスの正当性をチェックし、無効な場合は無限ループに入る。 // SYSMi_CheckEntryAddress(); @@ -106,7 +106,12 @@ void BOOT_Ready( void ) { isNtrMode = FALSE; } - + + // NTRモード起動でない場合は、LCFG関連データをメモリに展開 + if( !isNtrMode ) { + BOOTi_CopyLCFGData(); + } + // WRAMの配置 { MIHeader_WramRegs *pWRAMREGS = (MIHeader_WramRegs *)th->s.main_wram_config_data; @@ -209,3 +214,20 @@ static void BOOTi_ClearREG_RAM( void ) // レジスタクリアは基本的に OS_Boot で行う } + +// LCFG関連データをメインメモリ先頭の予約領域にコピーする +static void BOOTi_CopyLCFGData( void ) +{ + // 本体設定データ、HWノーマル情報、HWセキュア情報をメモリに展開しておく + MI_CpuCopyFast( LCFGi_GetTSD(), (void *)HW_PARAM_TWL_SETTINGS_DATA, sizeof(LCFGTWLSettingsData) ); + MI_CpuCopyFast( LCFGi_GetHWN(), (void *)HW_PARAM_TWL_HW_NORMAL_INFO, sizeof(LCFGTWLHWNormalInfo) ); + MI_CpuCopyFast( LCFGi_GetHWS(), (void *)HW_HW_SECURE_INFO, HW_HW_SECURE_INFO_END - HW_HW_SECURE_INFO ); + + // 本体設定データの不要部分をクリアしておく + { + LCFGTWLSettingsData *pSettings = (LCFGTWLSettingsData *)HW_PARAM_TWL_SETTINGS_DATA; + MI_CpuClear32( &pSettings->launcherStatus, sizeof(LCFGTWLLauncherStatus) ); + MI_CpuClearFast( &pSettings->parental, sizeof(LCFGTWLParentalControl) ); + } +} +