CRYPTO用ヒープの確保(SVNヒープと共有)

ARM9がWRAM-Bの1スロットをがめる様に修正

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1994 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
yutaka 2008-07-25 04:38:01 +00:00
parent 578a17ac67
commit 98bb2fe9cd
6 changed files with 39 additions and 9 deletions

View File

@ -35,9 +35,13 @@ static const u8 rsa_key_launcher[128] =
};
#endif
#define RSA_HEAP_SIZE (4*1024) // RSA用ヒープサイズ (サイズ調整必要)
#define RSA_HEAP_SIZE (4*1024) // RSA用ヒープサイズ
#define CRYPTO_HEAP_SIZE (12*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 u8 acHeap[RSA_HEAP_SIZE] __attribute__ ((aligned (32)));
static SVCSignHeapContext acPool;
#define MENU_TITLE_ID_HI 0x00030017ULL
@ -110,14 +114,12 @@ static void PreInit(void)
***************************************************************/
static void PostInit(void)
{
// アリーナ設定
// FS用アリーナ設定
{
static u32 arena[ 0x400 / sizeof(u32) ];
OS_SetMainArenaLo( arena );
OS_SetMainArenaHi( &arena[ 0x400 / sizeof(u32) ] );
}
// RSA用ヒープ設定
SVC_InitSignHeap( &acPool, acHeap, sizeof(acHeap) );
// FS/FATFS<46>‰Šú‰»
FS_InitFIRM();
}
@ -135,6 +137,18 @@ static BOOL TryResolveSrl(void)
MENU_TITLE_ID
};
int num;
// CRYPTO用ヒープ設定 (ESライブラリしか使わないはず)
void* lo = OS_InitAlloc( OS_ARENA_MAIN, heap, heap + CRYPTO_HEAP_SIZE, 1);
void* hi = heap + CRYPTO_HEAP_SIZE;
OSHeapHandle hh = OS_CreateHeap( OS_ARENA_MAIN, lo, hi );
if ( hh < 0 )
{
OS_TPrintf("Failed to allocate heap.\n");
return FALSE;
}
OS_SetCurrentHeap( OS_ARENA_MAIN, hh );
if ( !LCFG_ReadHWSecureInfo() )
{
OS_TPrintf("Failed to load HWSecureInfo.\n");
@ -151,6 +165,9 @@ static BOOL TryResolveSrl(void)
return FALSE;
}
OS_TPrintf("Launcher Title ID: 0x%016llx\n", titleIdList[num]);
OS_DestroyHeap( OS_ARENA_MAIN, hh );
return TRUE;
}
@ -283,6 +300,11 @@ void TwlMain( void )
// 6: after PXI
PUSH_PROFILE();
/* ES (CRYPTO) ライブラリはここまで */
/* SVN_RSA はここから*/
// RSA用ヒープ設定
SVC_InitSignHeap( &acPool, heap, RSA_HEAP_SIZE );
if ( !FS_LoadHeader( &acPool, NULL, NULL, RSA_KEY_ADDR ) || !CheckHeader() )
{
OS_TPrintf("Failed to call FS_LoadHeader() and/or CheckHeader().\n");

View File

@ -34,7 +34,8 @@ MIHeader_WramRegs wram_regs_init =
REG_MI_MBK_B4_FIELD( 1, MI_WRAM_BC_OFFSET_128KB, MI_WRAM_ARM7 ),
REG_MI_MBK_B5_FIELD( 1, MI_WRAM_BC_OFFSET_160KB, MI_WRAM_ARM7 ),
REG_MI_MBK_B6_FIELD( 1, MI_WRAM_BC_OFFSET_192KB, MI_WRAM_ARM7 ),
REG_MI_MBK_B7_FIELD( 1, MI_WRAM_BC_OFFSET_224KB, MI_WRAM_ARM7 ),
// REG_MI_MBK_B7_FIELD( 1, MI_WRAM_BC_OFFSET_224KB, MI_WRAM_ARM7 ),
REG_MI_MBK_B7_FIELD( 1, MI_WRAM_BC_OFFSET_224KB, MI_WRAM_ARM9 ),
},
{
REG_MI_MBK_C0_FIELD( 1, MI_WRAM_BC_OFFSET_0KB , MI_WRAM_ARM7 ),
@ -50,10 +51,16 @@ MIHeader_WramRegs wram_regs_init =
MI_WRAM_IMAGE_256KB,
REG_WRAM_MAP_CONV_ADDR( 6, A, SADDR, HW_WRAM_AREA_HALF - HW_WRAM_A_SIZE )
),
/*
REG_MI_MBK7_FIELD( REG_WRAM_MAP_CONV_ADDR( 7, B, EADDR, HW_WRAM_AREA + HW_WRAM_B_SIZE ),
MI_WRAM_IMAGE_256KB,
REG_WRAM_MAP_CONV_ADDR( 7, B, SADDR, HW_WRAM_AREA )
),
*/
REG_MI_MBK7_FIELD( REG_WRAM_MAP_CONV_ADDR( 7, B, EADDR, HW_WRAM_AREA_HALF - HW_WRAM_A_SIZE ), // joint to WRAM-A
MI_WRAM_IMAGE_256KB,
REG_WRAM_MAP_CONV_ADDR( 7, B, SADDR, HW_WRAM_AREA )
),
REG_MI_MBK8_FIELD( REG_WRAM_MAP_CONV_ADDR( 8, C, EADDR, MI_WRAM_MAP_NULL ),
MI_WRAM_IMAGE_256KB,
REG_WRAM_MAP_CONV_ADDR( 8, C, SADDR, MI_WRAM_MAP_NULL )

View File

@ -29,7 +29,7 @@ extern "C" {
//------------------------------------- *_LoadBuffer
#define HW_FIRM_LOAD_BUFFER_BASE MI_GetWramMapStart_B()
#define HW_FIRM_LOAD_BUFFER_UNIT_SIZE 0x8000
#define HW_FIRM_LOAD_BUFFER_UNIT_NUMS 8
#define HW_FIRM_LOAD_BUFFER_UNIT_NUMS 7
#define HW_FIRM_LOAD_BUFFER_SIZE (HW_FIRM_LOAD_BUFFER_UNIT_SIZE * HW_FIRM_LOAD_BUFFER_UNIT_NUMS)
#define HW_FIRM_LOAD_BUFFER_END (HW_FIRM_LOAD_BUFFER_BASE + HW_FIRM_LOAD_BUFFER_SIZE)

View File

@ -38,7 +38,7 @@ MEMORY
check.ITCM (RW) : ORIGIN = 0x0, LENGTH = 0x08000 > itcm.check
check.DTCM (RW) : ORIGIN = 0x0, LENGTH = 0x04000 > dtcm.check
check.WORKRAM (RWX) : ORIGIN = 0x037c0000, LENGTH = 0x40000 > workram.check
check.WORKRAM (RWX) : ORIGIN = 0x037b8000, LENGTH = 0x48000 > workram.check
binary.LTDAUTOLOAD_TOP (RW) : ORIGIN = 0, LENGTH = 0x0 > <STATIC.NAME><PROPERTY.LTDSUFFIX>
<FOREACH.LTDAUTOLOADS>

View File

@ -20,7 +20,8 @@
Static $(TARGET_NAME)
{
Address 0x037c0000
# Address 0x037c0000
Address 0x037b8000
Object $(OBJS_STATIC)
Library $(LLIBS) $(GLIBS) $(CW_LIBS)
Object * (.itcm)