mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
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:
parent
578a17ac67
commit
98bb2fe9cd
@ -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");
|
||||
|
||||
@ -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 )
|
||||
|
||||
Binary file not shown.
@ -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)
|
||||
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -20,7 +20,8 @@
|
||||
|
||||
Static $(TARGET_NAME)
|
||||
{
|
||||
Address 0x037c0000
|
||||
# Address 0x037c0000
|
||||
Address 0x037b8000
|
||||
Object $(OBJS_STATIC)
|
||||
Library $(LLIBS) $(GLIBS) $(CW_LIBS)
|
||||
Object * (.itcm)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user