とりあえず実機ではハッシュが合うようにした。

・ハッシュを保存するところを0x02000400に
・ARM9のハッシュを0x800ずらしたところから計算(makerom.TWLもそれに合わせている)
・SHA-1コンテキストをMMEMのおしりの方にstaticで持たせてみた。
くらい?

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@334 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
yosiokat 2007-12-07 00:05:06 +00:00
parent 4182e17ba0
commit ecd52da240
3 changed files with 32 additions and 33 deletions

View File

@ -180,12 +180,6 @@ TwlSpMain(void)
BOOT_Init();
// 活栓挿抜機能初期化
HOTSW_Init();
// カードがささっていたらブート開始
(void)HOTSW_Boot();
while (TRUE)
{
OS_Halt();

View File

@ -54,18 +54,22 @@ void RelocateCheckerInit( void )
//PutStringUTF16( 1 * 8, 0 * 8, TXT_COLOR_BLUE, (const u16 *)L"RelocateChecker");
//PutStringUTF16( 4 * 8, 8 * 8, TXT_COLOR_BLACK, (const u16 *)L"Under Construction...");
test = (u32 *)0x02000000;
PrintfSJIS(0,0,TXT_COLOR_BLUE, "%8x %8x %8x",*(test+5),*(test+6),*(test+7));
PrintfSJIS(0,2*8,TXT_COLOR_BLUE, "%8x %8x:arm9",*(test+8),*(test+9));
test = (u32 *)0x02000400;
PrintfSJIS(0,0*8,TXT_COLOR_BLUE, "%8x %8x %8x",*(test+0),*(test+1),*(test+2));
PrintfSJIS(0,2*8,TXT_COLOR_BLUE, "%8x %8x:arm9",*(test+3),*(test+4));
PrintfSJIS(0,4*8,TXT_COLOR_BLUE, "%8x %8x %8x",*(test+0),*(test+1),*(test+2));
PrintfSJIS(0,6*8,TXT_COLOR_BLUE, "%8x %8x:arm7",*(test+3),*(test+4));
test = (u32 *)0x02000420;
PrintfSJIS(0,6*8,TXT_COLOR_BLUE, "%8x %8x %8x",*(test+0),*(test+1),*(test+2));
PrintfSJIS(0,8*8,TXT_COLOR_BLUE, "%8x %8x:arm7",*(test+3),*(test+4));
PrintfSJIS(0,8*8,TXT_COLOR_BLUE, "%8x %8x %8x",*(test+10),*(test+11),*(test+12));
PrintfSJIS(0,10*8,TXT_COLOR_BLUE, "%8x %8x:arm9ltd",*(test+13),*(test+14));
PrintfSJIS(0,12*8,TXT_COLOR_BLUE, "%8x %8x %8x",*(test+15),*(test+16),*(test+17));
PrintfSJIS(0,14*8,TXT_COLOR_BLUE, "%8x %8x:arm7ltd",*(test+18),*(test+19));
test = (u32 *)0x02000440;
PrintfSJIS(0,12*8,TXT_COLOR_BLUE, "%8x %8x %8x",*(test+0),*(test+1),*(test+2));
PrintfSJIS(0,14*8,TXT_COLOR_BLUE, "%8x %8x:arm9ltd",*(test+3),*(test+4));
test = (u32 *)0x02000460;
PrintfSJIS(0,18*8,TXT_COLOR_BLUE, "%8x %8x %8x",*(test+0),*(test+1),*(test+2));
PrintfSJIS(0,20*8,TXT_COLOR_BLUE, "%8x %8x:arm7ltd",*(test+3),*(test+4));
GetAndDrawRTCData( &g_rtcDraw, TRUE );
GXS_SetVisiblePlane( GX_PLANEMASK_BG0 );

View File

@ -327,43 +327,44 @@ _start(void)
static void INITi_SetHMACSHA1ToAppParam(void)
{
#define DGT_TGT_ADDR ( HW_MAIN_MEM + 0x0400 )
/*
SVCHMACSHA1Context con;
// arm9_flx
SVC_HMACSHA1Init(&con, (void *)s_digestDefaultKey, DIGEST_HASH_BLOCK_SIZE_SHA1);
SVC_HMACSHA1Update(&con, (void *)(*(u32 *)(HW_TWL_ROM_HEADER_BUF + 0x028)), *((u32 *)(HW_TWL_ROM_HEADER_BUF + 0x02c)));
SVC_HMACSHA1GetHash(&con, (void *)HW_MAIN_MEM);
SVC_HMACSHA1GetHash(&con, (void *)DGT_TGT_ADDR);
// arm7_flx
SVC_HMACSHA1Init(&con, (void *)s_digestDefaultKey, DIGEST_HASH_BLOCK_SIZE_SHA1);
SVC_HMACSHA1Update(&con, (void *)(*(u32 *)(HW_TWL_ROM_HEADER_BUF + 0x038)), *((u32 *)(HW_TWL_ROM_HEADER_BUF + 0x03c)));
SVC_HMACSHA1GetHash(&con, (void *)(HW_MAIN_MEM + SVC_SHA1_DIGEST_SIZE));
SVC_HMACSHA1GetHash(&con, (void *)(DGT_TGT_ADDR + SVC_SHA1_DIGEST_SIZE));
// arm9_ltd
SVC_HMACSHA1Init(&con, (void *)s_digestDefaultKey, DIGEST_HASH_BLOCK_SIZE_SHA1);
SVC_HMACSHA1Update(&con, (void *)(*(u32 *)(HW_TWL_ROM_HEADER_BUF + 0x1c8)), *((u32 *)(HW_TWL_ROM_HEADER_BUF + 0x1cc)));
SVC_HMACSHA1GetHash(&con, (void *)(HW_MAIN_MEM + 2 * SVC_SHA1_DIGEST_SIZE));
SVC_HMACSHA1GetHash(&con, (void *)(DGT_TGT_ADDR + 2 * SVC_SHA1_DIGEST_SIZE));
// arm7_ltd
SVC_HMACSHA1Init(&con, (void *)s_digestDefaultKey, DIGEST_HASH_BLOCK_SIZE_SHA1);
SVC_HMACSHA1Update(&con, (void *)(*(u32 *)(HW_TWL_ROM_HEADER_BUF + 0x1d8)), *((u32 *)(HW_TWL_ROM_HEADER_BUF + 0x1dc)));
SVC_HMACSHA1GetHash(&con, (void *)(HW_MAIN_MEM + 3 * SVC_SHA1_DIGEST_SIZE));
SVC_HMACSHA1GetHash(&con, (void *)(DGT_TGT_ADDR + 3 * SVC_SHA1_DIGEST_SIZE));
*/
SVCSHA1Context con;
SVCSHA1Context *pCon = ( SVCSHA1Context * ) 0x037c0000;
// arm9_flx
SVC_SHA1Init(&con);
SVC_SHA1Update(&con, (void *)(*(u32 *)(HW_TWL_ROM_HEADER_BUF + 0x038)), *((u32 *)(HW_TWL_ROM_HEADER_BUF + 0x03c)));
SVC_SHA1GetHash(&con, (void *)HW_MAIN_MEM);
SVC_SHA1Init(pCon);
SVC_SHA1Update(pCon, (void *)( (*(u32 *)(HW_TWL_ROM_HEADER_BUF + 0x028)) + 0x800 ), ( *((u32 *)(HW_TWL_ROM_HEADER_BUF + 0x02c)) - 0x800 ) );
SVC_SHA1GetHash(pCon, (void *)DGT_TGT_ADDR);
// arm7_flx
SVC_SHA1Init(&con);
SVC_SHA1Update(&con, (void *)(*(u32 *)(HW_TWL_ROM_HEADER_BUF + 0x028)), *((u32 *)(HW_TWL_ROM_HEADER_BUF + 0x02c)));
SVC_SHA1GetHash(&con, (void *)(HW_MAIN_MEM + SVC_SHA1_DIGEST_SIZE));
SVC_SHA1Init(pCon);
SVC_SHA1Update(pCon, (void *)(*(u32 *)(HW_TWL_ROM_HEADER_BUF + 0x038)), *((u32 *)(HW_TWL_ROM_HEADER_BUF + 0x03c)));
SVC_SHA1GetHash(pCon, (void *)(DGT_TGT_ADDR + 32));
// arm9_ltd
SVC_SHA1Init(&con);
SVC_SHA1Update(&con, (void *)(*(u32 *)(HW_TWL_ROM_HEADER_BUF + 0x1c8)), *((u32 *)(HW_TWL_ROM_HEADER_BUF + 0x1cc)));
SVC_SHA1GetHash(&con, (void *)(HW_MAIN_MEM + 2 * SVC_SHA1_DIGEST_SIZE));
SVC_SHA1Init(pCon);
SVC_SHA1Update(pCon, (void *)(*(u32 *)(HW_TWL_ROM_HEADER_BUF + 0x1c8)), *((u32 *)(HW_TWL_ROM_HEADER_BUF + 0x1cc)));
SVC_SHA1GetHash(pCon, (void *)(DGT_TGT_ADDR + 64));
// arm7_ltd
SVC_SHA1Init(&con);
SVC_SHA1Update(&con, (void *)(*(u32 *)(HW_TWL_ROM_HEADER_BUF + 0x1d8)), *((u32 *)(HW_TWL_ROM_HEADER_BUF + 0x1dc)));
SVC_SHA1GetHash(&con, (void *)(HW_MAIN_MEM + 3 * SVC_SHA1_DIGEST_SIZE));
SVC_SHA1Init(pCon);
SVC_SHA1Update(pCon, (void *)(*(u32 *)(HW_TWL_ROM_HEADER_BUF + 0x1d8)), *((u32 *)(HW_TWL_ROM_HEADER_BUF + 0x1dc)));
SVC_SHA1GetHash(pCon, (void *)(DGT_TGT_ADDR + 96));
}
/*