From d81cc409ccede6e5d966b797964c4d503afc16a0 Mon Sep 17 00:00:00 2001 From: nakasima Date: Thu, 29 Jan 2009 10:15:48 +0000 Subject: [PATCH] =?UTF-8?q?=E3=82=B3=E3=82=A22=E3=81=AE0=E3=83=9A=E3=83=BC?= =?UTF-8?q?=E3=82=B8=E3=83=97=E3=83=AD=E3=83=86=E3=82=AF=E3=82=B7=E3=83=A7?= =?UTF-8?q?=E3=83=B3=E5=AF=BE=E5=BF=9C=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_firmware@238 b871894f-2f95-9b40-918c-086798483c85 --- .../bootrom/build/bootrom/alarm/ARM11/main.c | 24 +++++++++++-------- .../bootrom/build/libraries/init/ARM11/crt0.c | 10 ++++---- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/trunk/bootrom/build/bootrom/alarm/ARM11/main.c b/trunk/bootrom/build/bootrom/alarm/ARM11/main.c index 4683e89..24cee38 100644 --- a/trunk/bootrom/build/bootrom/alarm/ARM11/main.c +++ b/trunk/bootrom/build/bootrom/alarm/ARM11/main.c @@ -22,6 +22,10 @@ static void handler(void) void BromMain( void ) { + osTPrintf( "start mon0 = %08x\n", osGetPerfMonitor( OS_MONITOR_0 ) ); + osTPrintf( "start mon1 = %08x\n", osGetPerfMonitor( OS_MONITOR_1 ) ); + osTPrintf( "start mon2 = %08x\n", osGetPerfMonitor( OS_MONITOR_2 ) ); + osInitException(); osInitBROM(); @@ -39,18 +43,18 @@ void BromMain( void ) while (1) { OSTick tick = osGetTick(); - u32 mon[OS_MONITOR_NUM]; - mon[0] = osGetPerfMonitor( OS_MONITOR_0 ); - mon[1] = osGetPerfMonitor( OS_MONITOR_1 ); - mon[2] = osGetPerfMonitor( OS_MONITOR_2 ); + u32 pmon[OS_MONITOR_NUM]; + pmon[0] = osGetPerfMonitor( OS_MONITOR_0 ); + pmon[1] = osGetPerfMonitor( OS_MONITOR_1 ); + pmon[2] = osGetPerfMonitor( OS_MONITOR_2 ); osWaitInterruptID( TRUE, OSi_ALARM_IE_TIMER_ID ); - mon[0] = osGetPerfMonitor( OS_MONITOR_0 ) - mon[0]; - mon[1] = osGetPerfMonitor( OS_MONITOR_1 ) - mon[1]; - mon[2] = osGetPerfMonitor( OS_MONITOR_2 ) - mon[2]; + pmon[0] = osGetPerfMonitor( OS_MONITOR_0 ) - pmon[0]; + pmon[1] = osGetPerfMonitor( OS_MONITOR_1 ) - pmon[1]; + pmon[2] = osGetPerfMonitor( OS_MONITOR_2 ) - pmon[2]; tick = osGetTick() - tick; - osTPrintf( "wait mon0 = %llu msec\n", OS_TICK_TO_MSEC(mon[0]) ); // MG20ではパフォーマンスモニタのクロックが違う - osTPrintf( "wait mon1 = %llu msec\n", OS_TICK_TO_MSEC(mon[1]) ); - osTPrintf( "wait mon2 = %llu msec\n", OS_TICK_TO_MSEC(mon[2]) ); + osTPrintf( "wait mon0 = %llu msec\n", OS_TICK_TO_MSEC(pmon[0]) ); + osTPrintf( "wait mon1 = %llu msec\n", OS_TICK_TO_MSEC(pmon[1]) ); + osTPrintf( "wait mon2 = %llu msec\n", OS_TICK_TO_MSEC(pmon[2]) ); osTPrintf( "wait tick = %llu msec\n", OS_TICK_TO_MSEC(tick) ); } } diff --git a/trunk/bootrom/build/libraries/init/ARM11/crt0.c b/trunk/bootrom/build/libraries/init/ARM11/crt0.c index e6ffaea..786360a 100644 --- a/trunk/bootrom/build/libraries/init/ARM11/crt0.c +++ b/trunk/bootrom/build/libraries/init/ARM11/crt0.c @@ -73,13 +73,13 @@ stupStartHandlerVeneer LSYM(1) beq BSYM(1) //---- enable performance monitor + // カウンタ0/1は乱数の要素として使えるかもしれないのでリセットしない mrc p15, 0, r0, c15, c12, 0 - ldr r1, =HW_C15_PMN_ENABLE | HW_C15_CYCLE_COUNT_RESET | HW_C15_COUNT01_RESET | \ + ldr r1, =HW_C15_PMN_ENABLE | HW_C15_CYCLE_COUNT_RESET | \ (HW_C15_EVT_INC_EACH_CYCLE << HW_C15_COUNT0_EVT_SFT) | \ (HW_C15_EVT_INC_EACH_CYCLE << HW_C15_COUNT1_EVT_SFT) | \ HW_C15_CYCLE_COUNT_D64 orr r0, r0, r1 -// bic r0, r0, #HW_C15_CYCLE_COUNT_D64 mcr p15, 0, r0, c15, c12, 0 //---- check CPU-ID @@ -87,14 +87,12 @@ LSYM(1) beq BSYM(1) tst r2, #HW_C0_AP_CPU_ID_MASK beq core0_start -#ifdef SDK_NE1EMU cmp r2, #1 beq core1_start LSYM(1) wfi nop b BSYM(1) -#endif // SDK_NE1EMU core1_start //---- Wait for IPI @@ -113,13 +111,15 @@ core1_start mov r1, r1, lsl r2 mov r0, #~0 str r0, [r3] + ldr lr, =HW_START_VECTOR1_BUF + + // これ以降は0ページプロテクション領域を参照しないこと LSYM(10) wfi nop ldr r0, [r3] tst r0, r1 beq BSYM(10) - ldr lr, =HW_START_VECTOR1_BUF ldr lr, [lr] bx lr