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
|
#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;
|
static SVCSignHeapContext acPool;
|
||||||
|
|
||||||
#define MENU_TITLE_ID_HI 0x00030017ULL
|
#define MENU_TITLE_ID_HI 0x00030017ULL
|
||||||
@ -110,14 +114,12 @@ static void PreInit(void)
|
|||||||
***************************************************************/
|
***************************************************************/
|
||||||
static void PostInit(void)
|
static void PostInit(void)
|
||||||
{
|
{
|
||||||
// アリーナ設定
|
// FS用アリーナ設定
|
||||||
{
|
{
|
||||||
static u32 arena[ 0x400 / sizeof(u32) ];
|
static u32 arena[ 0x400 / sizeof(u32) ];
|
||||||
OS_SetMainArenaLo( arena );
|
OS_SetMainArenaLo( arena );
|
||||||
OS_SetMainArenaHi( &arena[ 0x400 / sizeof(u32) ] );
|
OS_SetMainArenaHi( &arena[ 0x400 / sizeof(u32) ] );
|
||||||
}
|
}
|
||||||
// RSA用ヒープ設定
|
|
||||||
SVC_InitSignHeap( &acPool, acHeap, sizeof(acHeap) );
|
|
||||||
// FS/FATFS<46>‰Šú‰»
|
// FS/FATFS<46>‰Šú‰»
|
||||||
FS_InitFIRM();
|
FS_InitFIRM();
|
||||||
}
|
}
|
||||||
@ -135,6 +137,18 @@ static BOOL TryResolveSrl(void)
|
|||||||
MENU_TITLE_ID
|
MENU_TITLE_ID
|
||||||
};
|
};
|
||||||
int num;
|
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() )
|
if ( !LCFG_ReadHWSecureInfo() )
|
||||||
{
|
{
|
||||||
OS_TPrintf("Failed to load HWSecureInfo.\n");
|
OS_TPrintf("Failed to load HWSecureInfo.\n");
|
||||||
@ -151,6 +165,9 @@ static BOOL TryResolveSrl(void)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
OS_TPrintf("Launcher Title ID: 0x%016llx\n", titleIdList[num]);
|
OS_TPrintf("Launcher Title ID: 0x%016llx\n", titleIdList[num]);
|
||||||
|
|
||||||
|
OS_DestroyHeap( OS_ARENA_MAIN, hh );
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -283,6 +300,11 @@ void TwlMain( void )
|
|||||||
// 6: after PXI
|
// 6: after PXI
|
||||||
PUSH_PROFILE();
|
PUSH_PROFILE();
|
||||||
|
|
||||||
|
/* ES (CRYPTO) ライブラリはここまで */
|
||||||
|
/* SVN_RSA はここから*/
|
||||||
|
// RSA用ヒープ設定
|
||||||
|
SVC_InitSignHeap( &acPool, heap, RSA_HEAP_SIZE );
|
||||||
|
|
||||||
if ( !FS_LoadHeader( &acPool, NULL, NULL, RSA_KEY_ADDR ) || !CheckHeader() )
|
if ( !FS_LoadHeader( &acPool, NULL, NULL, RSA_KEY_ADDR ) || !CheckHeader() )
|
||||||
{
|
{
|
||||||
OS_TPrintf("Failed to call FS_LoadHeader() and/or CheckHeader().\n");
|
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_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_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_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 ),
|
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,
|
MI_WRAM_IMAGE_256KB,
|
||||||
REG_WRAM_MAP_CONV_ADDR( 6, A, SADDR, HW_WRAM_AREA_HALF - HW_WRAM_A_SIZE )
|
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 ),
|
REG_MI_MBK7_FIELD( REG_WRAM_MAP_CONV_ADDR( 7, B, EADDR, HW_WRAM_AREA + HW_WRAM_B_SIZE ),
|
||||||
MI_WRAM_IMAGE_256KB,
|
MI_WRAM_IMAGE_256KB,
|
||||||
REG_WRAM_MAP_CONV_ADDR( 7, B, SADDR, HW_WRAM_AREA )
|
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 ),
|
REG_MI_MBK8_FIELD( REG_WRAM_MAP_CONV_ADDR( 8, C, EADDR, MI_WRAM_MAP_NULL ),
|
||||||
MI_WRAM_IMAGE_256KB,
|
MI_WRAM_IMAGE_256KB,
|
||||||
REG_WRAM_MAP_CONV_ADDR( 8, C, SADDR, MI_WRAM_MAP_NULL )
|
REG_WRAM_MAP_CONV_ADDR( 8, C, SADDR, MI_WRAM_MAP_NULL )
|
||||||
|
|||||||
Binary file not shown.
@ -29,7 +29,7 @@ extern "C" {
|
|||||||
//------------------------------------- *_LoadBuffer
|
//------------------------------------- *_LoadBuffer
|
||||||
#define HW_FIRM_LOAD_BUFFER_BASE MI_GetWramMapStart_B()
|
#define HW_FIRM_LOAD_BUFFER_BASE MI_GetWramMapStart_B()
|
||||||
#define HW_FIRM_LOAD_BUFFER_UNIT_SIZE 0x8000
|
#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_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)
|
#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.ITCM (RW) : ORIGIN = 0x0, LENGTH = 0x08000 > itcm.check
|
||||||
check.DTCM (RW) : ORIGIN = 0x0, LENGTH = 0x04000 > dtcm.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>
|
binary.LTDAUTOLOAD_TOP (RW) : ORIGIN = 0, LENGTH = 0x0 > <STATIC.NAME><PROPERTY.LTDSUFFIX>
|
||||||
<FOREACH.LTDAUTOLOADS>
|
<FOREACH.LTDAUTOLOADS>
|
||||||
|
|||||||
@ -20,7 +20,8 @@
|
|||||||
|
|
||||||
Static $(TARGET_NAME)
|
Static $(TARGET_NAME)
|
||||||
{
|
{
|
||||||
Address 0x037c0000
|
# Address 0x037c0000
|
||||||
|
Address 0x037b8000
|
||||||
Object $(OBJS_STATIC)
|
Object $(OBJS_STATIC)
|
||||||
Library $(LLIBS) $(GLIBS) $(CW_LIBS)
|
Library $(LLIBS) $(GLIBS) $(CW_LIBS)
|
||||||
Object * (.itcm)
|
Object * (.itcm)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user