From b364e3ab03d56f8d06d9c1e4437cbc08c26333d4 Mon Sep 17 00:00:00 2001 From: yutaka Date: Tue, 5 Aug 2008 09:28:41 +0000 Subject: [PATCH] =?UTF-8?q?es-sdk-20080801=5Frc1=E5=AF=BE=E5=BF=9C=20HWSec?= =?UTF-8?q?ureInfo=E3=81=8C=E3=81=AA=E3=81=84=E5=A0=B4=E5=90=88=E5=AF=BE?= =?UTF-8?q?=E5=BF=9C?= 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@2106 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- build/libraries/fs/ARM9/src/fs_firm.c | 9 +++--- build/nandfirm/menu-launcher/ARM9/main.c | 40 ++++++++++++++++++------ include/firm/hw/ARM7/mmap_firm.h | 5 --- include/firm/hw/ARM9/mmap_firm.h | 15 ++++++--- 4 files changed, 45 insertions(+), 24 deletions(-) diff --git a/build/libraries/fs/ARM9/src/fs_firm.c b/build/libraries/fs/ARM9/src/fs_firm.c index 21b8cd8f..4941c193 100644 --- a/build/libraries/fs/ARM9/src/fs_firm.c +++ b/build/libraries/fs/ARM9/src/fs_firm.c @@ -226,11 +226,12 @@ SDK_WEAK_SYMBOL AESResult SEA_Decrypt(const void* src, u32 srcSize, void* dst) (void)dst; return AES_RESULT_SUCCESS; } -#define SEA_ADDR_WRAM_1 ((u32)0x03004000u) +#define CRYPTO_BUFFER_ADDR 0x1ffb000 +#define CRYPTO_BUFFER_SIZE 0x1000 u32 SEA_GetCryptoBufferAddr(void); -SDK_WEAK_SYMBOL u32 SEA_GetCryptoBufferAddr(void) __attribute__((never_inline)) { return SEA_ADDR_WRAM_1; } +SDK_WEAK_SYMBOL u32 SEA_GetCryptoBufferAddr(void) __attribute__((never_inline)) { return HW_FIRM_ES_BUF; } u32 SEA_GetCryptoBufferSize(void); -SDK_WEAK_SYMBOL u32 SEA_GetCryptoBufferSize(void) __attribute__((never_inline)) { return HW_WRAM_1_SIZE; } +SDK_WEAK_SYMBOL u32 SEA_GetCryptoBufferSize(void) __attribute__((never_inline)) { return HW_FIRM_ES_BUF_SIZE; } /*---------------------------------------------------------------------------* Name: FS_ResolveSrl @@ -279,7 +280,7 @@ int FS_ResolveSrlList( const OSTitleId* titleIdList, u32 nums ) if ( !titleIdList || !nums || ES_ERR_OK != ES_InitLib() ) { return FALSE; - } + }OS_TPrintf("InitLib\n"); for ( i = 0; i < nums; i++ ) { #ifdef PROFILE_ES diff --git a/build/nandfirm/menu-launcher/ARM9/main.c b/build/nandfirm/menu-launcher/ARM9/main.c index 818f0daa..cbc84dc5 100644 --- a/build/nandfirm/menu-launcher/ARM9/main.c +++ b/build/nandfirm/menu-launcher/ARM9/main.c @@ -35,13 +35,6 @@ static const u8 rsa_key_launcher[128] = }; #endif -#define RSA_HEAP_SIZE (4*1024) // RSA用ヒープサイズ -#define CRYPTO_HEAP_SIZE (11*1024) // CRYPTO用ヒープサイズ - -#define HEAP_SIZE (RSA_HEAP_SIZE > CRYPTO_HEAP_SIZE ? RSA_HEAP_SIZE : CRYPTO_HEAP_SIZE) - -static u8 heap[HEAP_SIZE] ATTRIBUTE_ALIGN(32); - static SVCSignHeapContext acPool; #define MENU_TITLE_ID_HI 0x00030017ULL @@ -129,6 +122,29 @@ static void PostInit(void) リストからランチャーSRLを解決する ***************************************************************/ +//#define DEBUG_CRYPTO_ALLOCATOR +#ifdef DEBUG_CRYPTO_ALLOCATOR +#include +static int allocated=0; +static void* myAlloc(size_t size) +{ + void* ptr = OS_Alloc(size); + if (ptr) + { + OS_TPrintf("Alloc [%d] %d bytes.\n", ++allocated, size); + } + else + { + OS_TPrintf("Failed to allocate %d bytes.\n", size); + } + return ptr; +} +static void myFree(void* ptr) +{ + OS_TPrintf("Free [%d]\n", --allocated); + OS_Free(ptr); +} +#endif static BOOL TryResolveSrl(void) { OSTitleId titleIdList[] = @@ -139,8 +155,8 @@ static BOOL TryResolveSrl(void) int num; // CRYPTO用ヒープ設定 (ESライブラリしか使わないはず) - void* lo = OS_InitAlloc( OS_ARENA_MAIN, heap, heap + CRYPTO_HEAP_SIZE, 1); - void* hi = heap + CRYPTO_HEAP_SIZE; + void* lo = OS_InitAlloc( OS_ARENA_MAIN, (void*)HW_FIRM_RSA_BUF, (void*)HW_FIRM_RSA_BUF_END, 1); + void* hi = (void*)HW_FIRM_RSA_BUF_END; OSHeapHandle hh = OS_CreateHeap( OS_ARENA_MAIN, lo, hi ); if ( hh < 0 ) { @@ -149,6 +165,10 @@ static BOOL TryResolveSrl(void) } OS_SetCurrentHeap( OS_ARENA_MAIN, hh ); +#ifdef DEBUG_CRYPTO_ALLOCATOR + CRYPTO_SetAllocator(myAlloc, myFree); +#endif + if ( !LCFG_ReadHWSecureInfo() ) { OS_TPrintf("Failed to load HWSecureInfo.\n"); @@ -314,7 +334,7 @@ void TwlMain( void ) /* ES (CRYPTO) ライブラリはここまで */ /* SVN_RSA はここから*/ // RSA用ヒープ設定 - SVC_InitSignHeap( &acPool, heap, RSA_HEAP_SIZE ); + SVC_InitSignHeap( &acPool, (void*)HW_FIRM_RSA_BUF, HW_FIRM_RSA_BUF_SIZE ); if ( !FS_LoadHeader( &acPool, NULL, NULL, RSA_KEY_ADDR ) || !CheckHeader() ) { diff --git a/include/firm/hw/ARM7/mmap_firm.h b/include/firm/hw/ARM7/mmap_firm.h index b26140d1..d37685e2 100644 --- a/include/firm/hw/ARM7/mmap_firm.h +++ b/include/firm/hw/ARM7/mmap_firm.h @@ -21,11 +21,6 @@ extern "C" { #endif -//------------------------------------- FIRM -#define HW_FIRM HW_WRAM -#define HW_FIRM_END (HW_FIRM + HW_FIRM_SIZE) -#define HW_FIRM_SIZE (HW_WRAM_0_SIZE + HW_WRAM_1_SIZE + HW_WRAM_A_SIZE_MAX + HW_WRAM_B_SIZE_MAX) - //------------------------------------- FIRM_SVC_STACK #define HW_FIRM_SVC_STACK (HW_FIRM_SVC_STACK_END-HW_FIRM_SVC_STACK_SIZE) #define HW_FIRM_SVC_STACK_END (HW_WRAM_AREA_END - HW_PRV_WRAM_SYSRV_SIZE) diff --git a/include/firm/hw/ARM9/mmap_firm.h b/include/firm/hw/ARM9/mmap_firm.h index 9b2c9aec..6ba729c2 100644 --- a/include/firm/hw/ARM9/mmap_firm.h +++ b/include/firm/hw/ARM9/mmap_firm.h @@ -21,17 +21,22 @@ extern "C" { #endif -//------------------------------------- FIRM -#define HW_FIRM HW_WRAM_EX -#define HW_FIRM_END (HW_FIRM + HW_FIRM_SIZE) -#define HW_FIRM_SIZE HW_WRAM_C_SIZE_MAX - //------------------------------------- FIRM_RESET_BUF #define HW_FIRM_RESET_BUF HW_MAIN_MEM #define HW_FIRM_RESET_BUF_END (HW_FIRM_RESET_BUF + HW_FIRM_RESET_BUF_SIZE) //#define HW_FIRM_RESET_BUF_SIZE 0x400 // 12KB #define HW_FIRM_RESET_BUF_SIZE 0x800000 // 8MB +//------------------------------------- FIRM_RSA_BUF +#define HW_FIRM_RSA_BUF (HW_FIRM_RSA_BUF_END - HW_FIRM_RSA_BUF_SIZE) +#define HW_FIRM_RSA_BUF_END HW_FIRM_ES_BUF +#define HW_FIRM_RSA_BUF_SIZE 0x3000 // 12KB + +//------------------------------------- FIRM_ES_BUF +#define HW_FIRM_ES_BUF (HW_FIRM_ES_BUF_END - HW_FIRM_ES_BUF_SIZE) +#define HW_FIRM_ES_BUF_END HW_FIRM_FROM_BROM_BUF +#define HW_FIRM_ES_BUF_SIZE 0x1000 // 4KB + //------------------------------------- FIRM_FROM_BROM_BUF #define HW_FIRM_FROM_BROM_BUF (HW_FIRM_FROM_BROM_BUF_END - HW_FIRM_FROM_BROM_BUF_SIZE) #define HW_FIRM_FROM_BROM_BUF_END (HW_ITCM_END - 0x1000) // END - 4KB