diff --git a/build/buildtools/commondefs.firm b/build/buildtools/commondefs.firm index 6de8f38c..62ddcc21 100644 --- a/build/buildtools/commondefs.firm +++ b/build/buildtools/commondefs.firm @@ -18,6 +18,12 @@ ifndef TWLFIRM_COMMONDEFS_ TWLFIRM_COMMONDEFS_ = TRUE +FIRM_FOR_CTR = TRUE + +ifdef FIRM_FOR_CTR +MACRO_FLAGS += -DFIRM_FOR_CTR +endif + EMPTY ?= SPACE ?= $(EMPTY) $(EMPTY) @@ -28,7 +34,7 @@ TARGET_BIN ?= $(TARGET_FIRM_BIN) # override TARGET_PLATFORM := TWL override TWL_ARCHGEN := LIMITED -override TWL_CODEGEN := ARM +override TWL_CODEGEN := THUMB override TWL_MEMSIZE := 16M #---------------------------------------------------------------------------- diff --git a/build/libraries/init/ARM7/crt0_firm.c b/build/libraries/init/ARM7/crt0_firm.c index 9e881ca9..0712db4c 100644 --- a/build/libraries/init/ARM7/crt0_firm.c +++ b/build/libraries/init/ARM7/crt0_firm.c @@ -145,12 +145,16 @@ SDK_WEAK_SYMBOL asm void _start( void ) mov r0, #FIRM_PXI_ID_INIT_MMEM bl PXIi_WaitIDByIntf +#ifndef FIRM_FOR_CTR + //---- clear HW_TWL_MAIN_MEM_SHARED mov r0, #0 ldr r1, =HW_TWL_MAIN_MEM_SHARED mov r2, #HW_TWL_MAIN_MEM_SHARED_SIZE bl INITi_CpuClearFast +#endif // FIRM_FOR_CTR + //---- notify to clear HW_MAIN_MEM_SHARED mov r0, #FIRM_PXI_ID_INIT_MMEM bl PXIi_SendIDByIntf diff --git a/build/nandfirm/menu-launcher/ARM7/main.c b/build/nandfirm/menu-launcher/ARM7/main.c index 93249c37..2081e694 100644 --- a/build/nandfirm/menu-launcher/ARM7/main.c +++ b/build/nandfirm/menu-launcher/ARM7/main.c @@ -17,8 +17,6 @@ #include #include -#define FIRM_FOR_CTR - /* PROFILE_ENABLE を定義するとある程度のパフォーマンスチェックができます。 利用するためには、main.cかどこかに、u32 profile[256]; u32 pf_cnt = 0; を @@ -231,6 +229,8 @@ void TwlSpMain( void ) // PM_BackLightOn( FALSE ); +#ifndef FIRM_FOR_CTR + if ( !FS_LoadHeader( fd ) ) { OS_TPrintf("Failed to call FS_LoadHeader().\n"); @@ -253,6 +253,8 @@ void TwlSpMain( void ) // PM_BackLightOn( FALSE ); +#endif // FIRM_FOR_CTR + AESi_InitKeysFIRM(); AESi_InitSeed(); // 13: after AESi_InitSeed diff --git a/build/nandfirm/menu-launcher/ARM9/main.c b/build/nandfirm/menu-launcher/ARM9/main.c index fedc1c66..fcac527d 100644 --- a/build/nandfirm/menu-launcher/ARM9/main.c +++ b/build/nandfirm/menu-launcher/ARM9/main.c @@ -18,8 +18,6 @@ #include #include "print.h" -#define FIRM_FOR_CTR - #ifdef FIRM_USE_PRODUCT_KEYS #define RSA_KEY_ADDR OSi_GetFromFirmAddr()->rsa_pubkey[0] // 鍵管理.xls参照 #else @@ -333,6 +331,8 @@ void TwlMain( void ) // 6: after PXI PUSH_PROFILE(); +#ifndef FIRM_FOR_CTR + /* ES (CRYPTO) ライブラリはここまで */ /* SVN_RSA はここから*/ // RSA用ヒープ設定 @@ -351,8 +351,6 @@ void TwlMain( void ) // 8: after PXI PUSH_PROFILE(); -#ifndef FIRM_FOR_CTR - if ( !FS_LoadStatic( NULL ) ) { OS_TPrintf("Failed to call FS_LoadStatic().\n"); @@ -362,6 +360,12 @@ void TwlMain( void ) // 9: after FS_LoadStatic PUSH_PROFILE(); +#else // FIRM_FOR_CTR + + MI_CpuCopyFast( (void*)HW_TWL_MAIN_MEM_SHARED, (void*)HW_ROM_HEADER_BUF, HW_ROM_HEADER_BUF_END - HW_ROM_HEADER_BUF ); + MI_CpuCopyFast( (void*)HW_TWL_MAIN_MEM_SHARED, (void*)HW_TWL_ROM_HEADER_BUF, HW_TWL_ROM_HEADER_BUF_SIZE ); + MI_CpuClearFast( (void*)HW_TWL_MAIN_MEM_SHARED, HW_TWL_ROM_HEADER_BUF_SIZE ); + #endif // FIRM_FOR_CTR PXI_NotifyID( FIRM_PXI_ID_DONE_STATIC );