diff --git a/build/gcdfirm/sdmc-launcher/ARM7/main.c b/build/gcdfirm/sdmc-launcher/ARM7/main.c index efe86b3c..f4ab9adc 100644 --- a/build/gcdfirm/sdmc-launcher/ARM7/main.c +++ b/build/gcdfirm/sdmc-launcher/ARM7/main.c @@ -154,26 +154,28 @@ void TwlSpMain( void ) { int fd; // menu file descriptor +#ifdef PROFILE_ENABLE + // 0: bootrom + profile[pf_cnt++] = OS_TicksToMicroSecondsBROM32(OS_GetTick()); +#endif + InitDebugLED(); SetDebugLED(++step); // 0x81 PreInit(); - - // 0: before PXI + // 1: after PreInit PUSH_PROFILE(); SetDebugLED(++step); // 0x82 OS_InitFIRM(); OS_EnableIrq(); OS_EnableInterrupts(); - - // 1: after PXI + // 2: after OS_InitFIRM PUSH_PROFILE(); SetDebugLED(++step); // 0x83 PostInit(); - - // 2: after PM_InitFIRM + // 3: after PostInit PUSH_PROFILE(); SetDebugLED(++step); // 0x84 @@ -185,8 +187,7 @@ void TwlSpMain( void ) OS_TPrintf("Failed to call FATFS_Init().\n"); goto end; } - - // 3: after FS_Init + // 4: after FATFS_Init PUSH_PROFILE(); SetDebugLED(++step); // 0x85 @@ -197,8 +198,7 @@ void TwlSpMain( void ) OS_TPrintf("PXI_RecvID() was received invalid value (!=FIRM_PXI_ID_SET_PATH).\n"); goto end; } - - // 4: after PXI + // 5: after PXI PUSH_PROFILE(); SetDebugLED(++step); // 0x86 @@ -209,8 +209,7 @@ void TwlSpMain( void ) OS_TPrintf("Failed to call FS_OpenSrl().\n"); goto end; } - - // 5: after FS_OpenSrl + // 6: after FS_OpenSrl PUSH_PROFILE(); SetDebugLED(++step); // 0x87 @@ -221,8 +220,7 @@ void TwlSpMain( void ) OS_TPrintf("Failed to call FS_LoadHeader().\n"); goto end; } - - // 6: after FS_LoadHeader + // 7: after FS_LoadHeader PUSH_PROFILE(); SetDebugLED(++step); // 0x88 @@ -233,8 +231,7 @@ void TwlSpMain( void ) OS_TPrintf("PXI_RecvID() was received invalid value (!=FIRM_PXI_ID_DONE_HEADER).\n"); goto end; } - - // 7: after PXI + // 8: after PXI PUSH_PROFILE(); SetDebugLED(++step); // 0x89 @@ -242,8 +239,7 @@ void TwlSpMain( void ) AESi_InitKeysFIRM(); AESi_RecvSeed( rh->s.developer_encrypt ); - - // 8: after AESi_RecvSeed + // 9: after AESi_RecvSeed PUSH_PROFILE(); SetDebugLED(++step); // 0x8a @@ -254,8 +250,7 @@ void TwlSpMain( void ) OS_TPrintf("Failed to call FS_LoadStatic().\n"); goto end; } - - // 9: after FS_LoadStatic + // 10: after FS_LoadStatic PUSH_PROFILE(); SetDebugLED(++step); // 0x8b @@ -266,9 +261,9 @@ void TwlSpMain( void ) OS_TPrintf("PXI_RecvID() was received invalid value (!=FIRM_PXI_ID_DONE_STATIC).\n"); goto end; } - - // 10: after PXI + // 11: after PXI PUSH_PROFILE(); + #ifdef PROFILE_ENABLE { int i; diff --git a/build/gcdfirm/sdmc-launcher/ARM9/main.c b/build/gcdfirm/sdmc-launcher/ARM9/main.c index 98c166f5..9b78dcff 100644 --- a/build/gcdfirm/sdmc-launcher/ARM9/main.c +++ b/build/gcdfirm/sdmc-launcher/ARM9/main.c @@ -207,10 +207,16 @@ static void EraseAll(void) void TwlMain( void ) { - PreInit(); +#ifdef PROFILE_ENABLE + // 0: bootrom + profile[pf_cnt++] = OS_TicksToMicroSecondsBROM32(OS_GetTick()); +#endif - // 0: before PXI - PUSH_PROFILE(); + PreInit(); +#ifdef PROFILE_ENABLE + // 1: before OS_InitFIRM + profile[pf_cnt++] = OS_TicksToMicroSecondsBROM32(OS_GetTick()); +#endif OS_InitFIRM(); OS_EnableIrq(); @@ -219,22 +225,19 @@ void TwlMain( void ) #ifdef PROFILE_ENABLE OS_InitTick(); #endif - // 1: after PXI + // 2: after OS_InitTick PUSH_PROFILE(); PostInit(); - - // 2: after PostInit + // 3: after PostInit PUSH_PROFILE(); STD_CopyString((char*)HW_TWL_FS_BOOT_SRL_PATH_BUF, MENU_FILE); - - // 3: after FS_ResolveSrl + // 4: after STD_CopyString PUSH_PROFILE(); PXI_NotifyID( FIRM_PXI_ID_SET_PATH ); - - // 4: after PXI + // 5: after PXI PUSH_PROFILE(); if ( !FS_LoadHeader(&acPool, RSA_KEY_ADDR ) || !CheckHeader() ) @@ -242,19 +245,16 @@ void TwlMain( void ) OS_TPrintf("Failed to call FS_LoadHeader() and/or CheckHeader().\n"); goto end; } - - // 5: after FS_LoadHeader + // 6: after FS_LoadHeader PUSH_PROFILE(); PXI_NotifyID( FIRM_PXI_ID_DONE_HEADER ); - - // 6: after PXI + // 7: after PXI PUSH_PROFILE(); AESi_SendSeed( FS_GetAesKeySeed() ); FS_DeleteAesKeySeed(); - - // 7: after AESi_SendSeed + // 8: after AESi_SendSeed PUSH_PROFILE(); if ( !FS_LoadStatic() ) @@ -262,14 +262,13 @@ void TwlMain( void ) OS_TPrintf("Failed to call FS_LoadStatic().\n"); goto end; } - - // 8: after FS_LoadStatic + // 9: after FS_LoadStatic PUSH_PROFILE(); PXI_NotifyID( FIRM_PXI_ID_DONE_STATIC ); - - // 9: after PXI + // 10: after PXI PUSH_PROFILE(); + #ifdef PROFILE_ENABLE { int i; diff --git a/build/libraries/os/common/os_init_firm.c b/build/libraries/os/common/os_init_firm.c index 532682e5..26aa0c0c 100644 --- a/build/libraries/os/common/os_init_firm.c +++ b/build/libraries/os/common/os_init_firm.c @@ -91,6 +91,14 @@ void OS_InitFIRM(void) //---- Init Card #ifndef SDK_SMALL_BUILD // CARD_Init(); +#endif + + //---- init System config +#ifdef SDK_TWL +// if (OS_IsRunOnTwl() == TRUE) +// { + SCFG_Init(); +// } #endif //---- Init Power Manager @@ -142,6 +150,14 @@ void OS_InitFIRM(void) //---- Init Cartridge #ifndef SDK_TEG // CTRDG_Init(); +#endif + + //---- init System config +#ifdef SDK_TWL +// if (OS_IsRunOnTwl() == TRUE) +// { + SCFG_Init(); +// } #endif #endif // SDK_ARM9 diff --git a/build/nandfirm/menu-launcher/ARM7/main.c b/build/nandfirm/menu-launcher/ARM7/main.c index 9c37d41f..2b27a38f 100644 --- a/build/nandfirm/menu-launcher/ARM7/main.c +++ b/build/nandfirm/menu-launcher/ARM7/main.c @@ -162,22 +162,19 @@ void TwlSpMain( void ) SetDebugLED(++step); // 0x81 PreInit(); - - // 1: before PXI + // 1: after PreInit PUSH_PROFILE(); SetDebugLED(++step); // 0x82 OS_InitFIRM(); OS_EnableIrq(); OS_EnableInterrupts(); - - // 2: after PXI + // 2: after OS_InitFIRM PUSH_PROFILE(); SetDebugLED(++step); // 0x83 PostInit(); - - // 3: after PM_InitFIRM + // 3: after PostInit PUSH_PROFILE(); SetDebugLED(++step); // 0x84 @@ -189,8 +186,7 @@ void TwlSpMain( void ) OS_TPrintf("Failed to call FATFS_Init().\n"); goto end; } - - // 4: after FS_Init + // 4: after FATFS_Init PUSH_PROFILE(); SetDebugLED(++step); // 0x85 @@ -201,7 +197,6 @@ void TwlSpMain( void ) OS_TPrintf("PXI_RecvID() was received invalid value (!=FIRM_PXI_ID_SET_PATH).\n"); goto end; } - // 5: after PXI PUSH_PROFILE(); SetDebugLED(++step); // 0x86 @@ -213,7 +208,6 @@ void TwlSpMain( void ) OS_TPrintf("Failed to call FS_OpenSrl().\n"); goto end; } - // 6: after FS_OpenSrl PUSH_PROFILE(); SetDebugLED(++step); // 0x87 @@ -225,7 +219,6 @@ void TwlSpMain( void ) OS_TPrintf("Failed to call FS_LoadHeader().\n"); goto end; } - // 7: after FS_LoadHeader PUSH_PROFILE(); SetDebugLED(++step); // 0x88 @@ -237,7 +230,6 @@ void TwlSpMain( void ) OS_TPrintf("PXI_RecvID() was received invalid value (!=FIRM_PXI_ID_DONE_HEADER).\n"); goto end; } - // 8: after PXI PUSH_PROFILE(); SetDebugLED(++step); // 0x89 @@ -246,7 +238,6 @@ void TwlSpMain( void ) AESi_InitKeysFIRM(); AESi_RecvSeed( rh->s.developer_encrypt ); - // 9: after AESi_RecvSeed PUSH_PROFILE(); SetDebugLED(++step); // 0x8a @@ -258,7 +249,6 @@ void TwlSpMain( void ) OS_TPrintf("Failed to call FS_LoadStatic().\n"); goto end; } - // 10: after FS_LoadStatic PUSH_PROFILE(); SetDebugLED(++step); // 0x8b @@ -270,9 +260,9 @@ void TwlSpMain( void ) OS_TPrintf("PXI_RecvID() was received invalid value (!=FIRM_PXI_ID_DONE_STATIC).\n"); goto end; } - // 11: after PXI PUSH_PROFILE(); + #ifdef PROFILE_ENABLE { int i; diff --git a/build/nandfirm/menu-launcher/ARM9/Makefile b/build/nandfirm/menu-launcher/ARM9/Makefile index 4283ad4e..a66ae301 100644 --- a/build/nandfirm/menu-launcher/ARM9/Makefile +++ b/build/nandfirm/menu-launcher/ARM9/Makefile @@ -47,6 +47,7 @@ LLIBRARIES += libes.TWL$(ARCHGEN_TYPE).a libboc.TWL$(ARCHGEN_TYPE).a else LLIBRARIES += ../Release/libes.TWL$(ARCHGEN_TYPE).a ../Release/libboc.TWL$(ARCHGEN_TYPE).a endif +LLIBRARIES += liblcfg$(TWL_LIBSUFFIX).a #---------------------------------------------------------------------------- diff --git a/build/nandfirm/menu-launcher/ARM9/main.c b/build/nandfirm/menu-launcher/ARM9/main.c index bde526d0..dedc4164 100644 --- a/build/nandfirm/menu-launcher/ARM9/main.c +++ b/build/nandfirm/menu-launcher/ARM9/main.c @@ -15,6 +15,7 @@ $Author$ *---------------------------------------------------------------------------*/ #include +#include #ifndef FIRM_USE_TWLSDK_KEYS #define RSA_KEY_ADDR OSi_GetFromFirmAddr()->rsa_pubkey[0] // 鍵管理.xls参照 @@ -39,7 +40,9 @@ static const u8 rsa_key[128] = static u8 acHeap[RSA_HEAP_SIZE] __attribute__ ((aligned (32))); static SVCSignHeapContext acPool; -#define MENU_TITLE_ID 0x000300074c4e4352ULL +#define MENU_TITLE_ID_HI 0x00030007ULL +#define MENU_TITLE_ID_LO 0x4c4e4352ULL +#define MENU_TITLE_ID (MENU_TITLE_ID_HI << 32 | MENU_TITLE_ID_LO) /* PROFILE_ENABLE を定義するとある程度のパフォーマンスチェックができます。 @@ -122,6 +125,48 @@ static void PostInit(void) FS_InitFIRM(); } +/*************************************************************** + TryResolveSrl + + NANDに格納された情報からランチャーSRLを解決する +***************************************************************/ +static BOOL TryResolveSrl(void) +{ + u64 titleId = MENU_TITLE_ID_HI << 32; + if ( !LCFG_ReadHWSecureInfo() ) + { + OS_TPrintf("Failed to load HWSecureInfo.\n"); + return FALSE; + } + LCFG_THW_GetLauncherGameCode( (u8*)&titleId ); + + // 4: after LCFG_ReadHWSecureInfo + PUSH_PROFILE(); + + if ( !FS_ResolveSrl( titleId ) ) + { + OS_TPrintf("Failed to call FS_ResolveSrl( 0x%016llx ).\n", titleId); + return FALSE; + } + OS_TPrintf("Launcher Title ID: 0x%016llx\n", titleId); + return TRUE; +} +/*************************************************************** + RetryResolveSrl + + デフォルト設定からランチャーSRLを解決する +***************************************************************/ +static BOOL RetryResolveSrl(void) +{ + if ( !FS_ResolveSrl( MENU_TITLE_ID ) ) + { + OS_TPrintf("Failed to call FS_ResolveSrl( 0x%016llx ).\n", MENU_TITLE_ID); + return FALSE; + } + OS_TPrintf("Launcher Title ID: 0x%016llx\n", MENU_TITLE_ID); + return TRUE; +} + /*************************************************************** CheckHeader @@ -208,11 +253,12 @@ void TwlMain( void ) // 0: bootrom profile[pf_cnt++] = OS_TicksToMicroSecondsBROM32(OS_GetTick()); #endif + PreInit(); - - // 1: before PXI - PUSH_PROFILE(); - +#ifdef PROFILE_ENABLE + // 1: before OS_InitFIRM + profile[pf_cnt++] = OS_TicksToMicroSecondsBROM32(OS_GetTick()); +#endif OS_InitFIRM(); OS_EnableIrq(); OS_EnableInterrupts(); @@ -224,22 +270,18 @@ void TwlMain( void ) PUSH_PROFILE(); PostInit(); - // 3: after PostInit PUSH_PROFILE(); - if ( !FS_ResolveSrl( MENU_TITLE_ID ) ) + if ( !TryResolveSrl() && !RetryResolveSrl() ) { - OS_TPrintf("Failed to call FS_ResolveSrl( 0x%016llx ).\n", MENU_TITLE_ID); goto end; } - - // 4: after FS_ResolveSrl + // 5: after FS_ResolveSrl PUSH_PROFILE(); PXI_NotifyID( FIRM_PXI_ID_SET_PATH ); - - // 5: after PXI + // 6: after PXI PUSH_PROFILE(); if ( !FS_LoadHeader(&acPool, RSA_KEY_ADDR ) || !CheckHeader() ) @@ -247,19 +289,16 @@ void TwlMain( void ) OS_TPrintf("Failed to call FS_LoadHeader() and/or CheckHeader().\n"); goto end; } - - // 6: after FS_LoadHeader + // 7: after FS_LoadHeader PUSH_PROFILE(); PXI_NotifyID( FIRM_PXI_ID_DONE_HEADER ); - - // 7: after PXI + // 8: after PXI PUSH_PROFILE(); AESi_SendSeed( FS_GetAesKeySeed() ); FS_DeleteAesKeySeed(); - - // 8: after AESi_SendSeed + // 9: after AESi_SendSeed PUSH_PROFILE(); if ( !FS_LoadStatic() ) @@ -267,14 +306,13 @@ void TwlMain( void ) OS_TPrintf("Failed to call FS_LoadStatic().\n"); goto end; } - - // 9: after FS_LoadStatic + // 10: after FS_LoadStatic PUSH_PROFILE(); PXI_NotifyID( FIRM_PXI_ID_DONE_STATIC ); - - // 10: after PXI + // 11: after PXI PUSH_PROFILE(); + #ifdef PROFILE_ENABLE { int i; diff --git a/build/nandfirm/menu-launcher2/ARM7/main.c b/build/nandfirm/menu-launcher2/ARM7/main.c index ccb0a1d6..6b70c0f8 100644 --- a/build/nandfirm/menu-launcher2/ARM7/main.c +++ b/build/nandfirm/menu-launcher2/ARM7/main.c @@ -160,22 +160,19 @@ void TwlSpMain( void ) SetDebugLED(++step); // 0x81 PreInit(); - - // 1: before PXI + // 1: after PreInit PUSH_PROFILE(); SetDebugLED(++step); // 0x82 OS_InitFIRM(); OS_EnableIrq(); OS_EnableInterrupts(); - // 2: after PXI PUSH_PROFILE(); SetDebugLED(++step); // 0x83 PostInit(); - - // 3: after PM_InitFIRM + // 3: after PostInit PUSH_PROFILE(); SetDebugLED(++step); // 0x84 @@ -187,25 +184,21 @@ void TwlSpMain( void ) OS_TPrintf("Failed to call FATFS_Init().\n"); goto end; } - - // 4: after FS_Init + // 4: after FATFS_Init PUSH_PROFILE(); SetDebugLED(++step); // 0x85 PM_BackLightOn( FALSE ); - // 5: PUSH_PROFILE(); SetDebugLED(++step); // 0x86 //PM_BackLightOn( FALSE ); - // 6: PUSH_PROFILE(); SetDebugLED(++step); // 0x87 //PM_BackLightOn( FALSE ); - // 7: PUSH_PROFILE(); SetDebugLED(++step); // 0x88 @@ -217,7 +210,6 @@ void TwlSpMain( void ) OS_TPrintf("PXI_RecvID() was received invalid value (!=FIRM_PXI_ID_DONE_HEADER).\n"); goto end; } - // 8: after PXI PUSH_PROFILE(); SetDebugLED(++step); // 0x89 @@ -226,13 +218,11 @@ void TwlSpMain( void ) AESi_InitKeysFIRM(); AESi_RecvSeed( rh->s.developer_encrypt ); - // 9: after AESi_RecvSeed PUSH_PROFILE(); SetDebugLED(++step); // 0x8a PM_BackLightOn( FALSE ); - // 10: PUSH_PROFILE(); SetDebugLED(++step); // 0x8b @@ -244,9 +234,9 @@ void TwlSpMain( void ) OS_TPrintf("PXI_RecvID() was received invalid value (!=FIRM_PXI_ID_DONE_STATIC).\n"); goto end; } - // 11: after PXI PUSH_PROFILE(); + #ifdef PROFILE_ENABLE { int i; diff --git a/build/nandfirm/menu-launcher2/ARM9/Makefile b/build/nandfirm/menu-launcher2/ARM9/Makefile index 918106b8..47c43f07 100644 --- a/build/nandfirm/menu-launcher2/ARM9/Makefile +++ b/build/nandfirm/menu-launcher2/ARM9/Makefile @@ -45,6 +45,7 @@ LLIBRARIES += libes.TWL$(ARCHGEN_TYPE).a libboc.TWL$(ARCHGEN_TYPE).a else LLIBRARIES += ../Release/libes.TWL$(ARCHGEN_TYPE).a ../Release/libboc.TWL$(ARCHGEN_TYPE).a endif +LLIBRARIES += liblcfg$(TWL_LIBSUFFIX).a #---------------------------------------------------------------------------- diff --git a/build/nandfirm/menu-launcher2/ARM9/main.c b/build/nandfirm/menu-launcher2/ARM9/main.c index ac776ecc..74947c7e 100644 --- a/build/nandfirm/menu-launcher2/ARM9/main.c +++ b/build/nandfirm/menu-launcher2/ARM9/main.c @@ -16,6 +16,7 @@ *---------------------------------------------------------------------------*/ #include #include +#include #ifndef FIRM_USE_TWLSDK_KEYS #define RSA_KEY_ADDR OSi_GetFromFirmAddr()->rsa_pubkey[0] // 鍵管理.xls参照 @@ -40,7 +41,9 @@ static const u8 rsa_key[128] = static u8 acHeap[RSA_HEAP_SIZE] __attribute__ ((aligned (32))); static SVCSignHeapContext acPool; -#define MENU_TITLE_ID 0x000300074c4e4352ULL +#define MENU_TITLE_ID_HI 0x00030007ULL +#define MENU_TITLE_ID_LO 0x4c4e4352ULL +#define MENU_TITLE_ID (MENU_TITLE_ID_HI << 32 | MENU_TITLE_ID_LO) /* PROFILE_ENABLE を定義するとある程度のパフォーマンスチェックができます。 @@ -123,6 +126,47 @@ static void PostInit(void) FS_InitFIRM(); } +/*************************************************************** + TryResolveSrl + + NANDに格納された情報からランチャーSRLを解決する +***************************************************************/ +static BOOL TryResolveSrl(void) +{ + u64 titleId = MENU_TITLE_ID_HI << 32; + if ( !LCFG_ReadHWSecureInfo() ) + { + OS_TPrintf("Failed to load HWSecureInfo.\n"); + return FALSE; + } + LCFG_THW_GetLauncherGameCode( (u8*)&titleId ); + // 4: after LCFG_ReadHWSecureInfo + PUSH_PROFILE(); + + if ( !FS_ResolveSrl( titleId ) ) + { + OS_TPrintf("Failed to call FS_ResolveSrl( 0x%016llx ).\n", titleId); + return FALSE; + } + OS_TPrintf("Launcher Title ID: 0x%016llx\n", titleId); + return TRUE; +} +/*************************************************************** + RetryResolveSrl + + デフォルト設定からランチャーSRLを解決する +***************************************************************/ +static BOOL RetryResolveSrl(void) +{ + if ( !FS_ResolveSrl( MENU_TITLE_ID ) ) + { + OS_TPrintf("Failed to call FS_ResolveSrl( 0x%016llx ).\n", MENU_TITLE_ID); + return FALSE; + } + OS_TPrintf("Launcher Title ID: 0x%016llx\n", MENU_TITLE_ID); + return TRUE; +} + /*************************************************************** CheckHeader @@ -211,10 +255,12 @@ void TwlMain( void ) // 0: bootrom profile[pf_cnt++] = OS_TicksToMicroSecondsBROM32(OS_GetTick()); #endif - PreInit(); - // 1: before PXI - PUSH_PROFILE(); + PreInit(); +#ifdef PROFILE_ENABLE + // 1: before OS_InitFIRM + profile[pf_cnt++] = OS_TicksToMicroSecondsBROM32(OS_GetTick()); +#endif OS_InitFIRM(); OS_EnableIrq(); @@ -223,21 +269,18 @@ void TwlMain( void ) #ifdef PROFILE_ENABLE OS_InitTick(); #endif - // 2: after PXI + // 2: after OS_InitTick PUSH_PROFILE(); PostInit(); - // 3: after PostInit PUSH_PROFILE(); - if ( !FS_ResolveSrl( MENU_TITLE_ID ) ) + if ( !TryResolveSrl() && !RetryResolveSrl() ) { - OS_TPrintf("Failed to call FS_ResolveSrl( 0x%016llx ).\n", MENU_TITLE_ID); goto end; } - - // 4: after FS_ResolveSrl + // 5: after FS_ResolveSrl PUSH_PROFILE(); if ( !FS_OpenSrl( &file ) ) @@ -245,8 +288,7 @@ void TwlMain( void ) OS_TPrintf("Failed to call FS_OpenSrl().\n"); goto end; } - - // 5: after FS_OpenSrl + // 6: after FS_OpenSrl PUSH_PROFILE(); if ( !FS_LoadSrlHeader( &file, &acPool, RSA_KEY_ADDR ) || !CheckHeader() ) @@ -254,18 +296,15 @@ void TwlMain( void ) OS_TPrintf("Failed to call FS_LoadSrlHeader() and/or CheckHeader().\n"); goto end; } - - // 6: after FS_LoadSrlHeader + // 7: after FS_LoadSrlHeader PUSH_PROFILE(); PXI_NotifyID( FIRM_PXI_ID_DONE_HEADER ); - - // 7: after PXI + // 8: after PXI PUSH_PROFILE(); AESi_SendSeed( FS_GetAesKeySeed() ); - - // 8: after AESi_SendSeed + // 9: after AESi_SendSeed PUSH_PROFILE(); if ( !FS_LoadSrlStatic( &file ) ) @@ -273,14 +312,13 @@ void TwlMain( void ) OS_TPrintf("Failed to call FS_LoadSrlStatic().\n"); goto end; } - - // 9: after FS_LoadSrlStatic + // 10: after FS_LoadSrlStatic PUSH_PROFILE(); PXI_NotifyID( FIRM_PXI_ID_DONE_STATIC ); - - // 10: after PXI + // 11: after PXI PUSH_PROFILE(); + #ifdef PROFILE_ENABLE { int i; diff --git a/build/nandfirm/sdmc-launcher/ARM7/main.c b/build/nandfirm/sdmc-launcher/ARM7/main.c index cc456bdd..6d122ce6 100644 --- a/build/nandfirm/sdmc-launcher/ARM7/main.c +++ b/build/nandfirm/sdmc-launcher/ARM7/main.c @@ -153,26 +153,28 @@ void TwlSpMain( void ) { int fd; // menu file descriptor +#ifdef PROFILE_ENABLE + // 0: bootrom + profile[pf_cnt++] = OS_TicksToMicroSecondsBROM32(OS_GetTick()); +#endif + InitDebugLED(); SetDebugLED(++step); // 0x81 PreInit(); - - // 0: before PXI + // 1: after PreInit PUSH_PROFILE(); SetDebugLED(++step); // 0x82 OS_InitFIRM(); OS_EnableIrq(); OS_EnableInterrupts(); - - // 1: after PXI + // 2: after OS_InitFIRM PUSH_PROFILE(); SetDebugLED(++step); // 0x83 PostInit(); - - // 2: after PM_InitFIRM + // 3: after PostInit PUSH_PROFILE(); SetDebugLED(++step); // 0x84 @@ -184,8 +186,7 @@ void TwlSpMain( void ) OS_TPrintf("Failed to call FATFS_Init().\n"); goto end; } - - // 3: after FS_Init + // 4: after FATFS_Init PUSH_PROFILE(); SetDebugLED(++step); // 0x85 @@ -196,8 +197,7 @@ void TwlSpMain( void ) OS_TPrintf("PXI_RecvID() was received invalid value (!=FIRM_PXI_ID_SET_PATH).\n"); goto end; } - - // 4: after PXI + // 5: after PXI PUSH_PROFILE(); SetDebugLED(++step); // 0x86 @@ -208,8 +208,7 @@ void TwlSpMain( void ) OS_TPrintf("Failed to call FS_OpenSrl().\n"); goto end; } - - // 5: after FS_OpenSrl + // 6: after FS_OpenSrl PUSH_PROFILE(); SetDebugLED(++step); // 0x87 @@ -220,8 +219,7 @@ void TwlSpMain( void ) OS_TPrintf("Failed to call FS_LoadHeader().\n"); goto end; } - - // 6: after FS_LoadHeader + // 7: after FS_LoadHeader PUSH_PROFILE(); SetDebugLED(++step); // 0x88 @@ -232,8 +230,7 @@ void TwlSpMain( void ) OS_TPrintf("PXI_RecvID() was received invalid value (!=FIRM_PXI_ID_DONE_HEADER).\n"); goto end; } - - // 7: after PXI + // 8: after PXI PUSH_PROFILE(); SetDebugLED(++step); // 0x89 @@ -241,8 +238,7 @@ void TwlSpMain( void ) AESi_InitKeysFIRM(); AESi_RecvSeed( rh->s.developer_encrypt ); - - // 8: after AESi_RecvSeed + // 9: after AESi_RecvSeed PUSH_PROFILE(); SetDebugLED(++step); // 0x8a @@ -253,8 +249,7 @@ void TwlSpMain( void ) OS_TPrintf("Failed to call FS_LoadStatic().\n"); goto end; } - - // 9: after FS_LoadStatic + // 10: after FS_LoadStatic PUSH_PROFILE(); SetDebugLED(++step); // 0x8b @@ -265,9 +260,9 @@ void TwlSpMain( void ) OS_TPrintf("PXI_RecvID() was received invalid value (!=FIRM_PXI_ID_DONE_STATIC).\n"); goto end; } - - // 10: after PXI + // 11: after PXI PUSH_PROFILE(); + #ifdef PROFILE_ENABLE { int i; diff --git a/build/nandfirm/sdmc-launcher/ARM9/main.c b/build/nandfirm/sdmc-launcher/ARM9/main.c index 5d6f5a32..02cfcbb8 100644 --- a/build/nandfirm/sdmc-launcher/ARM9/main.c +++ b/build/nandfirm/sdmc-launcher/ARM9/main.c @@ -211,10 +211,16 @@ static void EraseAll(void) void TwlMain( void ) { - PreInit(); +#ifdef PROFILE_ENABLE + // 0: bootrom + profile[pf_cnt++] = OS_TicksToMicroSecondsBROM32(OS_GetTick()); +#endif - // 0: before PXI - PUSH_PROFILE(); + PreInit(); +#ifdef PROFILE_ENABLE + // 1: before Init + profile[pf_cnt++] = OS_TicksToMicroSecondsBROM32(OS_GetTick()); +#endif OS_InitFIRM(); OS_EnableIrq(); @@ -223,12 +229,11 @@ void TwlMain( void ) #ifdef PROFILE_ENABLE OS_InitTick(); #endif - // 1: after PXI + // 2: after OS_InitTick PUSH_PROFILE(); PostInit(); - - // 2: after PostInit + // 3: after PostInit PUSH_PROFILE(); switch ( PAD_Read() & PAD_KEYPORT_MASK ) @@ -252,13 +257,11 @@ void TwlMain( void ) OS_TPrintf("Unknown pad pattern (%X).\n", PAD_Read() & PAD_KEYPORT_MASK); goto end; } - - // 3: after FS_ResolveSrl + // 4: after FS_ResolveSrl PUSH_PROFILE(); PXI_NotifyID( FIRM_PXI_ID_SET_PATH ); - - // 4: after PXI + // 5: after PXI PUSH_PROFILE(); if ( !FS_LoadHeader(&acPool, RSA_KEY_ADDR ) || !CheckHeader() ) @@ -266,19 +269,16 @@ void TwlMain( void ) OS_TPrintf("Failed to call FS_LoadHeader() and/or CheckHeader().\n"); goto end; } - - // 5: after FS_LoadHeader + // 6: after FS_LoadHeader PUSH_PROFILE(); PXI_NotifyID( FIRM_PXI_ID_DONE_HEADER ); - - // 6: after PXI + // 7: after PXI PUSH_PROFILE(); AESi_SendSeed( FS_GetAesKeySeed() ); FS_DeleteAesKeySeed(); - - // 7: after AESi_SendSeed + // 8: after AESi_SendSeed PUSH_PROFILE(); if ( !FS_LoadStatic() ) @@ -286,14 +286,13 @@ void TwlMain( void ) OS_TPrintf("Failed to call FS_LoadStatic().\n"); goto end; } - - // 8: after FS_LoadStatic + // 9: after FS_LoadStatic PUSH_PROFILE(); PXI_NotifyID( FIRM_PXI_ID_DONE_STATIC ); - - // 9: after PXI + // 10: after PXI PUSH_PROFILE(); + #ifdef PROFILE_ENABLE { int i;