From 4182e17ba0473d85098564e845e0d45d8eb00e4e Mon Sep 17 00:00:00 2001 From: yoshida_teruhisa Date: Thu, 6 Dec 2007 10:33:58 +0000 Subject: [PATCH] =?UTF-8?q?=E5=86=8D=E9=85=8D=E7=BD=AE=E3=83=81=E3=82=A7?= =?UTF-8?q?=E3=83=83=E3=82=AB=E4=B8=AD=E9=80=94=E4=BF=9D=E5=AD=98?= 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@333 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- build/tests/RelocateChecker/ARM7/hyena_rc.lsf | 4 +- .../ARM9/src/RelocateChecker.c | 18 ++++- .../crt/ARM7/src/crt0_rc.LTD.c | 79 ++++++++++++------- .../crt/ARM9/src/crt0_rc.FLX.c | 40 +++------- 4 files changed, 78 insertions(+), 63 deletions(-) diff --git a/build/tests/RelocateChecker/ARM7/hyena_rc.lsf b/build/tests/RelocateChecker/ARM7/hyena_rc.lsf index 3d2ca0bb..1961d19c 100644 --- a/build/tests/RelocateChecker/ARM7/hyena_rc.lsf +++ b/build/tests/RelocateChecker/ARM7/hyena_rc.lsf @@ -21,7 +21,8 @@ Static $(TARGET_NAME) { Address $(ADDRESS_FLXMAIN) - Library $(CRT0_O) + Library $(CRT0_O) \ + libsyscall_sp.twl.a StackSize 1024 1024 } @@ -31,7 +32,6 @@ Autoload WRAM Address $(ADDRESS_LTDWRAM) Library libsubpsyscall.a \ - libsyscall_sp.twl.a \ $(CW_LIBS) \ libos_sp$(LIBSUFFIX).a \ libmi_sp$(LIBSUFFIX).a \ diff --git a/build/tests/RelocateChecker/ARM9/src/RelocateChecker.c b/build/tests/RelocateChecker/ARM9/src/RelocateChecker.c index 27f3ac04..28edeeaf 100644 --- a/build/tests/RelocateChecker/ARM9/src/RelocateChecker.c +++ b/build/tests/RelocateChecker/ARM9/src/RelocateChecker.c @@ -46,12 +46,26 @@ RTCDrawProperty g_rtcDraw = { // 初期化 void RelocateCheckerInit( void ) { + u32 *test; GX_DispOff(); GXS_DispOff(); NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_WHITE ); - 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..."); + //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)); + + 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)); + + 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)); GetAndDrawRTCData( &g_rtcDraw, TRUE ); GXS_SetVisiblePlane( GX_PLANEMASK_BG0 ); diff --git a/build/tests/RelocateChecker/crt/ARM7/src/crt0_rc.LTD.c b/build/tests/RelocateChecker/crt/ARM7/src/crt0_rc.LTD.c index c19c7812..61b64921 100644 --- a/build/tests/RelocateChecker/crt/ARM7/src/crt0_rc.LTD.c +++ b/build/tests/RelocateChecker/crt/ARM7/src/crt0_rc.LTD.c @@ -211,25 +211,6 @@ _start(void) ldr r2, =HW_PRV_WRAM mov lr, pc bx r2 - - // ロードされたアプリのダイジェストを計算してアプリ間パラメータに格納 - bl INITi_SetHMACSHA1ToAppParam - - /* 専用 WRAM 上のコードで ARM9 とハンドシェイク2 */ - ldr r0, =HW_BOOT_SHAKEHAND_9 - ldr r1, =HW_BOOT_SHAKEHAND_7 - ldr r2, =HW_PRV_WRAM - mov lr, pc - bx r2 - - // arm9待ち - - /* 専用 WRAM 上のコードで ARM9 とハンドシェイク3 */ - ldr r0, =HW_BOOT_SHAKEHAND_9 - ldr r1, =HW_BOOT_SHAKEHAND_7 - ldr r2, =HW_PRV_WRAM - mov lr, pc - bx r2 @010: /* スタックポインタ設定 */ @@ -255,6 +236,9 @@ _start(void) strlt r0, [r1], #4 blt @011 + // ロードされたアプリのダイジェストを計算してアプリ間パラメータに格納 + bl INITi_SetHMACSHA1ToAppParam + /* TWL ハードウェア上で動作しているかどうかを調査 */ ldr r1, =REG_CLK_ADDR ldrh r0, [r1] @@ -332,6 +316,7 @@ _start(void) #include #include +#include /*---------------------------------------------------------------------------* Name: INITi_SetHMACSHA1ToAppParam Description: ROMがロードされた各アプリ領域のHMACSHA1を計算し、アプリ間パラ @@ -339,8 +324,10 @@ _start(void) Arguments: なし。 Returns: なし。 *---------------------------------------------------------------------------*/ + static void INITi_SetHMACSHA1ToAppParam(void) { +/* SVCHMACSHA1Context con; // arm9_flx SVC_HMACSHA1Init(&con, (void *)s_digestDefaultKey, DIGEST_HASH_BLOCK_SIZE_SHA1); @@ -358,17 +345,51 @@ static void INITi_SetHMACSHA1ToAppParam(void) 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_CalcHMACSHA1( (void *)HW_MAIN_MEM, (void *)(*(u32 *)(HW_TWL_ROM_HEADER_BUF + 0x028)), - *((u32 *)(HW_TWL_ROM_HEADER_BUF + 0x02c)), (void *)s_digestDefaultKey, DIGEST_HASH_BLOCK_SIZE_SHA1 );// arm9_flx - SVC_CalcHMACSHA1( (void *)(HW_MAIN_MEM + SVC_SHA1_DIGEST_SIZE), (void *)(*(u32 *)(HW_TWL_ROM_HEADER_BUF + 0x038)), - *((u32 *)(HW_TWL_ROM_HEADER_BUF + 0x03c)), (void *)s_digestDefaultKey, DIGEST_HASH_BLOCK_SIZE_SHA1 );// arm7_flx - SVC_CalcHMACSHA1( (void *)(HW_MAIN_MEM + 2 * SVC_SHA1_DIGEST_SIZE), (void *)(*(u32 *)(HW_TWL_ROM_HEADER_BUF + 0x1c8)), - *((u32 *)(HW_TWL_ROM_HEADER_BUF + 0x1cc)), (void *)s_digestDefaultKey, DIGEST_HASH_BLOCK_SIZE_SHA1 );// arm9_ltd - SVC_CalcHMACSHA1( (void *)(HW_MAIN_MEM + 3 * SVC_SHA1_DIGEST_SIZE), (void *)(*(u32 *)(HW_TWL_ROM_HEADER_BUF + 0x1d8)), - *((u32 *)(HW_TWL_ROM_HEADER_BUF + 0x1dc)), (void *)s_digestDefaultKey, DIGEST_HASH_BLOCK_SIZE_SHA1 );// arm7_ltd - */ +*/ + + SVCSHA1Context con; + // 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); + // 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)); + // 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)); + // 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)); + } +/* +static asm void INITi_SetHMACSHA1ToAppParam(void) +{ + mov r0, #HW_MAIN_MEM + add r0, r0, #SVC_SHA1_DIGEST_SIZE + add r0, r0, #SVC_SHA1_DIGEST_SIZE + add r0, r0, #SVC_SHA1_DIGEST_SIZE + add r0, r0, #SVC_SHA1_DIGEST_SIZE + ldr r1, =s_digestDefaultKey + mov r2, #(DIGEST_HASH_BLOCK_SIZE_SHA1) + bl SVC_HMACSHA1Init + + mov r1, #HW_WRAM_AREA + sub r3, r1, 0x2000 + ldr r1, [r3, 0x028] + ldr r2, [r3, 0x02c] + bl SVC_HMACSHA1Update + + mov r1, #HW_MAIN_MEM + bl SVC_HMACSHA1GetHash + + bx lr +} +*/ /*---------------------------------------------------------------------------* diff --git a/build/tests/RelocateChecker/crt/ARM9/src/crt0_rc.FLX.c b/build/tests/RelocateChecker/crt/ARM9/src/crt0_rc.FLX.c index 0145cdd3..b0c17b46 100644 --- a/build/tests/RelocateChecker/crt/ARM9/src/crt0_rc.FLX.c +++ b/build/tests/RelocateChecker/crt/ARM9/src/crt0_rc.FLX.c @@ -163,41 +163,12 @@ static const u32 microcode_SwitchCpuClock[13] = SDK_WEAK_SYMBOL asm void _start(void) { - - /* ハンドシェイク用マイクロコードを ITCM にコピー */ - ldr r1, =microcode_ShakeHand - ldr r2, =HW_ITCM - add r3, r2, #40 -@001: ldr r0, [r1], #4 - str r0, [r2], #4 - cmp r2, r3 - blt @001 @000: /* 割り込み禁止 */ mov r12, #HW_REG_BASE str r12, [r12, #REG_IME_OFFSET] // Use that LSB of HW_REG_BASE is 0b0 - /* ITCM 上のコードで ARM7 とハンドシェイク1 */ - ldr r0, =HW_BOOT_SYNC_PHASE - mov r1, #BOOT_SYNC_PHASE_1 - strh r1, [r0] - ldr r0, =HW_BOOT_SHAKEHAND_9 - ldr r1, =HW_BOOT_SHAKEHAND_7 - ldr r2, =HW_ITCM - blx r2 - - // arm7のダイジェスト計算待ち - - /* ITCM 上のコードで ARM7 とハンドシェイク2 */ - ldr r0, =HW_BOOT_SYNC_PHASE - mov r1, #BOOT_SYNC_PHASE_1 - strh r1, [r0] - ldr r0, =HW_BOOT_SHAKEHAND_9 - ldr r1, =HW_BOOT_SHAKEHAND_7 - ldr r2, =HW_ITCM - blx r2 - /* システム制御コプロセッサ初期化 */ bl INITi_InitCoprocessor @@ -214,7 +185,16 @@ _start(void) ldr r2, =(HW_MAIN_MEM_SYSTEM+HW_MAIN_MEM_SYSTEM_SIZE-HW_PXI_SIGNAL_PARAM_ARM9) bl INITi_CpuClear32 - /* ITCM 上のコードで ARM7 とハンドシェイク3 */ + /* ハンドシェイク用マイクロコードを ITCM にコピー */ + ldr r1, =microcode_ShakeHand + ldr r2, =HW_ITCM + add r3, r2, #40 +@001: ldr r0, [r1], #4 + str r0, [r2], #4 + cmp r2, r3 + blt @001 + + /* ITCM 上のコードで ARM7 とハンドシェイク1 */ ldr r0, =HW_BOOT_SYNC_PHASE mov r1, #BOOT_SYNC_PHASE_1 strh r1, [r0]