From a013d63162ce3e58fefe80e2ae3332e7d864faf1 Mon Sep 17 00:00:00 2001 From: yoshida_teruhisa Date: Fri, 30 Nov 2007 07:37:48 +0000 Subject: [PATCH] =?UTF-8?q?=E6=9A=AB=E5=AE=9A=E7=9A=84=E3=81=AB=E5=86=8D?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E3=83=81=E3=82=A7=E3=83=83=E3=82=AF=E5=8F=8A?= =?UTF-8?q?=E3=81=B3=E3=83=AA=E3=82=B9=E3=83=88=E4=BD=9C=E6=88=90=E3=81=AE?= =?UTF-8?q?=E5=87=A6=E7=90=86=E3=82=92bootAPI=E3=81=AB=E8=BF=BD=E5=8A=A0?= =?UTF-8?q?=E3=80=82=E5=BE=8C=E3=81=A7=E9=96=A2=E6=95=B0=E5=8C=96=EF=BC=86?= =?UTF-8?q?=E5=87=A6=E7=90=86=E8=BF=BD=E5=8A=A0=E4=BA=88=E5=AE=9A=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@297 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../libraries_sysmenu/boot/ARM7/src/bootAPI.c | 60 +++++++++++++++++++ .../libraries_sysmenu/boot/ARM9/src/bootAPI.c | 9 ++- .../Launcher/ARM9/src/launcher.c | 23 ++++++- include/sysmenu/hw/common/mmap.h | 2 +- 4 files changed, 91 insertions(+), 3 deletions(-) diff --git a/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c b/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c index 8c6a17ba..5e075943 100644 --- a/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c +++ b/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c @@ -77,6 +77,66 @@ BOOL BOOT_WaitStart( void ) HW_PXI_SIGNAL_PARAM_ARM9, HW_MAIN_MEM_SYSTEM_END - HW_PXI_SIGNAL_PARAM_ARM9, NULL }; + +/* +#define SYSM_TWL_ARM9_LOAD_MMEM 0x02000400 // ロード可能なARM9 static MMEM アドレス +#define SYSM_TWL_ARM9_LOAD_MMEM_END SYSM_NTR_ARM9_LOAD_MMEM_END // ロード可能なARM9 static MMEM 最終アドレス +#define SYSM_TWL_ARM7_LOAD_MMEM SYSM_NTR_ARM7_LOAD_MMEM // ロード可能なARM7 static MMEM アドレス +#define SYSM_TWL_ARM7_LOAD_MMEM_END SYSM_NTR_ARM7_LOAD_MMEM_END // ロード可能なARM7 static MMEM 最終アドレス + +#define SYSM_TWL_ARM9_LTD_LOAD_MMEM 0x02400000 // ロード可能なARM9 LTD static MMEM アドレス +#define SYSM_TWL_ARM9_LTD_LOAD_MMEM_END 0x02800000 // ロード可能なARM9 LTD static MMEM 最終アドレス +#define SYSM_TWL_ARM7_LTD_LOAD_MMEM 0x02e80000 // ロード可能なARM7 LTD static MMEM アドレス +#define SYSM_TWL_ARM7_LTD_LOAD_MMEM_END 0x02f88000 // ロード可能なARM7 LTD static MMEM 最終アドレス +*/ + + // [TODO]再配置リストの作成と設定 + // 自分以外のデフォルトロード領域に被る場合は即NG + static u32 relocate_list[13] = + { + NULL + }; + u32 revCopy = 0; + + ROM_Header *pHeader = (ROM_Header *)HW_TWL_ROM_HEADER_BUF; + u32 arm9ltd_dest = (u32)pHeader->s.main_ltd_ram_address; + u32 arm9ltd_size = (u32)pHeader->s.main_ltd_size; + u32 arm9flx_dest = (u32)pHeader->s.main_ram_address; + u32 arm9flx_size = (u32)pHeader->s.main_size; + u32 arm7ltd_dest = (u32)pHeader->s.sub_ltd_ram_address; + u32 arm7ltd_size = (u32)pHeader->s.sub_ltd_size; + u32 arm7flx_dest = (u32)pHeader->s.sub_ram_address; + u32 arm7flx_size = (u32)pHeader->s.sub_size; + + { + // チェックコード例 + // とりあえずarm9ltdのみ。同じような処理は関数化しないとぐちゃぐちゃ。NTRの場合は領域が若干違うので注意。 + if( SYSM_TWL_ARM9_LTD_LOAD_MMEM <= arm9ltd_dest && arm9ltd_dest + arm9ltd_size < SYSM_TWL_ARM9_LTD_LOAD_MMEM_END) + { + // リロケート必要なし + }else + { + // リロケート必要あり + if( SYSM_TWL_ARM7_LTD_LOAD_MMEM <= arm9ltd_dest && arm9ltd_dest < SYSM_TWL_ARM7_LTD_LOAD_MMEM_END ) return FALSE;//NG + if( SYSM_TWL_ARM7_LTD_LOAD_MMEM <= arm9ltd_dest + arm9ltd_size && arm9ltd_dest + arm9ltd_size < SYSM_TWL_ARM7_LTD_LOAD_MMEM_END ) return FALSE;//NG + if( SYSM_TWL_ARM9_LOAD_MMEM <= arm9ltd_dest && arm9ltd_dest < SYSM_TWL_ARM9_LOAD_MMEM_END ) return FALSE;//NG + if( SYSM_TWL_ARM9_LOAD_MMEM <= arm9ltd_dest + arm9ltd_size && arm9ltd_dest + arm9ltd_size < SYSM_TWL_ARM9_LOAD_MMEM_END ) return FALSE;//NG + if( SYSM_TWL_ARM7_LOAD_MMEM <= arm9ltd_dest && arm9ltd_dest < SYSM_TWL_ARM7_LOAD_MMEM_END ) return FALSE;//NG + if( SYSM_TWL_ARM7_LOAD_MMEM <= arm9ltd_dest + arm9ltd_size && arm9ltd_dest + arm9ltd_size < SYSM_TWL_ARM7_LOAD_MMEM_END ) return FALSE;//NG + + // リロケート可能 + if( SYSM_TWL_ARM9_LTD_LOAD_MMEM <= arm9ltd_dest && SYSM_TWL_ARM9_LTD_LOAD_MMEM_END <= arm9ltd_dest + arm9ltd_size ) + { + revCopy = 1; // 後方からコピーするフラグON + } + + relocate_list[0] = SYSM_TWL_ARM9_LTD_LOAD_MMEM; + relocate_list[1] = arm9ltd_dest; + relocate_list[2] = arm9ltd_size; + relocate_list[3] = revCopy; + } + } + // [TODO]起動するターゲットの種類を指定する必要あり OS_Boot( (void *)*(u32 *)(HW_TWL_ROM_HEADER_BUF + 0x34), clr_list, REBOOT_TARGET_TWL_SYSTEM ); } diff --git a/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c b/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c index 05aae74e..947c117d 100644 --- a/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c +++ b/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c @@ -102,7 +102,14 @@ void BOOT_Ready( void ) //HW_DTCM, HW_DTCM_SIZE, NULL }; - // [TODO]起動するターゲットの種類を指定する必要あり + + // [TODO]再配置リストの作成と設定(ほぼARM7側でやるのでこちらは空) + static u32 relocate_list[] = + { + NULL + }; + + // 起動するターゲットの種類を指定する必要あり OS_Boot( (void *)*(u32 *)(HW_TWL_ROM_HEADER_BUF + 0x24), clr_list, REBOOT_TARGET_TWL_SYSTEM ); } } diff --git a/build/systemMenu_RED/Launcher/ARM9/src/launcher.c b/build/systemMenu_RED/Launcher/ARM9/src/launcher.c index 55e7c930..f8535fed 100644 --- a/build/systemMenu_RED/Launcher/ARM9/src/launcher.c +++ b/build/systemMenu_RED/Launcher/ARM9/src/launcher.c @@ -577,9 +577,30 @@ static void MoveByScrollBar( void ) static void DrawScrollBar( TitleProperty *pTitleList ) { int l; + static int col_count = 0; + static int col_count_d = 1; + static const int COL_FLAME_MAX = 30; + static const int COL_NUM = 15; + static const int COL_DIV = COL_FLAME_MAX / COL_NUM; + + col_count += col_count_d; + if(col_count < 0) + { + col_count = 0; + col_count_d = 1; + } + if(COL_FLAME_MAX <= col_count) + { + col_count = COL_FLAME_MAX - 1; + col_count_d = -1; + } + for(l=0; l