タイトルIDによるブートターゲット選択を追加。

未使用配列のクリアコード削除。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@816 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
nakasima 2008-03-05 01:40:02 +00:00
parent a65faaf95c
commit a363914ca5
4 changed files with 36 additions and 10 deletions

View File

@ -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)
{

View File

@ -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

View File

@ -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

View File

@ -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) );