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