From a363914ca548dd8ed93acfffd61d14163502ba3e Mon Sep 17 00:00:00 2001 From: nakasima Date: Wed, 5 Mar 2008 01:40:02 +0000 Subject: [PATCH] =?UTF-8?q?=E3=82=BF=E3=82=A4=E3=83=88=E3=83=ABID=E3=81=AB?= =?UTF-8?q?=E3=82=88=E3=82=8B=E3=83=96=E3=83=BC=E3=83=88=E3=82=BF=E3=83=BC?= =?UTF-8?q?=E3=82=B2=E3=83=83=E3=83=88=E9=81=B8=E6=8A=9E=E3=82=92=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0=E3=80=82=20=E6=9C=AA=E4=BD=BF=E7=94=A8=E9=85=8D?= =?UTF-8?q?=E5=88=97=E3=81=AE=E3=82=AF=E3=83=AA=E3=82=A2=E3=82=B3=E3=83=BC?= =?UTF-8?q?=E3=83=89=E5=89=8A=E9=99=A4=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@816 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- build/libraries_sysmenu/boot/ARM7/src/bootAPI.c | 16 +++++++++++++++- build/libraries_sysmenu/boot/ARM9/src/bootAPI.c | 17 ++++++++++++++++- .../hotsw/ARM7/include/romSpec.h | 6 ++++-- build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c | 7 +------ 4 files changed, 36 insertions(+), 10 deletions(-) diff --git a/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c b/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c index 812cdfd8..8193348f 100644 --- a/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c +++ b/build/libraries_sysmenu/boot/ARM7/src/bootAPI.c @@ -166,7 +166,21 @@ BOOL BOOT_WaitStart( void ) // アプリケーション選択 if ( dh->s.platform_code ) { -// target = REBOOT_TARGET_TWL_APP; + if ( th->s.titleID_Hi & TITLE_ID_HI_APP_TYPE_MASK ) + { + if ( th->s.titleID_Hi & TITLE_ID_HI_SECURE_FLAG_MASK ) + { + target = REBOOT_TARGET_TWL_SECURE_SYSTEM; + } + else + { + target = REBOOT_TARGET_TWL_SYSTEM; + } + } + else + { + target = REBOOT_TARGET_TWL_APP; + } #ifdef SYSMENU_DISABLE_TWL_BOOT while (1) { diff --git a/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c b/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c index bd21d956..d9cc5f96 100644 --- a/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c +++ b/build/libraries_sysmenu/boot/ARM9/src/bootAPI.c @@ -120,12 +120,27 @@ void BOOT_Ready( void ) REBOOTTarget target = REBOOT_TARGET_TWL_SYSTEM; BOOL ds = FALSE; + ROM_Header *th = (ROM_Header *)HW_TWL_ROM_HEADER_BUF; // TWL拡張ROMヘッダ(DSアプリには無い) ROM_Header *dh = (ROM_Header *)HW_ROM_HEADER_BUF; // DS互換ROMヘッダ // アプリケーション選択 if ( dh->s.platform_code ) { -// target = REBOOT_TARGET_TWL_APP; + if ( th->s.titleID_Hi & TITLE_ID_HI_APP_TYPE_MASK ) + { + if ( th->s.titleID_Hi & TITLE_ID_HI_SECURE_FLAG_MASK ) + { + target = REBOOT_TARGET_TWL_SECURE_SYSTEM; + } + else + { + target = REBOOT_TARGET_TWL_SYSTEM; + } + } + else + { + target = REBOOT_TARGET_TWL_APP; + } #ifdef SYSMENU_DISABLE_TWL_BOOT OS_Terminate(); #endif // SYSMENU_DISABLE_TWL_BOOT diff --git a/build/libraries_sysmenu/hotsw/ARM7/include/romSpec.h b/build/libraries_sysmenu/hotsw/ARM7/include/romSpec.h index 703ca705..d5402a47 100644 --- a/build/libraries_sysmenu/hotsw/ARM7/include/romSpec.h +++ b/build/libraries_sysmenu/hotsw/ARM7/include/romSpec.h @@ -24,16 +24,18 @@ extern "C" { // ROM memory map +#define HOTSW_PAGE_SIZE 0x200 // 512B +#define HOTSW_BOOT_SEG_SIZE 0x1000 // 4KB #define HOTSW_LOAD_TABLE_SIZE 0x2000 // 8KB -#define HOTSW_DS_ROM_HEADER_SIZE 0x200 // 512B -#define HOTSW_ROM_HEADER_SIZE 0x1000 // 4KB #define HOTSW_SECURE_AREA_SIZE 0x4000 // 16KB #define HOTSW_SECURE2_AREA_SIZE 0x4000 // 16KB +#define HOTSW_EMU_INFO_SIZE 0x20 #define HOTSW_SECURE_AREA_OFS 0x4000 // 16KB #define HOTSW_GAME_AREA_OFS 0x8000 // 32KB #define HOTSW_SECURE2_AREA_OFS 0x3000 // 12KB #define HOTSW_GAME2_AREA_OFS 0x7000 // 28KB +#define HOTSW_EMU_INFO_OFS (HOTSW_SECURE_AREA_OFS - HOTSW_PAGE_SIZE + 0x160) // ROM ID diff --git a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c index 0f0f6199..855dbe4e 100644 --- a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c +++ b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c @@ -504,13 +504,11 @@ static HotSwState LoadBannerData(void) state = (retval == HOTSW_SUCCESS) ? TRUE : FALSE; SYSMi_GetWork()->flags.hotsw.isValidCardBanner = state; SYSMi_GetWork()->flags.hotsw.isExistCard = state; - SYSMi_GetWork()->flags.hotsw.isCardStateChanged = TRUE; } else{ // バナーデータが登録されていない場合 (この関数の外で排他制御されているからここでは排他制御しないでOK) SYSMi_GetWork()->flags.hotsw.isValidCardBanner = FALSE; SYSMi_GetWork()->flags.hotsw.isExistCard = TRUE; - SYSMi_GetWork()->flags.hotsw.isCardStateChanged = TRUE; } if ( SYSMi_GetWork()->flags.hotsw.isExistCard ) @@ -522,6 +520,7 @@ static HotSwState LoadBannerData(void) SYSMi_GetWork()->flags.hotsw.isInspectCard = FALSE; } + SYSMi_GetWork()->flags.hotsw.isCardStateChanged = TRUE; SYSMi_GetWork()->flags.hotsw.is1stCardChecked = TRUE; return retval; @@ -593,12 +592,8 @@ static HotSwState LoadStaticModule(void) // セキュア領域先頭2K分のハッシュ値を求めて、Work領域にコピー { - u8 sha1data[DIGEST_SIZE_SHA1]; SVCHMACSHA1Context hash; - // クリア - MI_CpuClear8(sha1data, sizeof(sha1data)); - // ハッシュ初期化 SVC_HMACSHA1Init( &hash, s_digestDefaultKey, sizeof(s_digestDefaultKey) );