mirror of
https://github.com/rvtr/ctr_firmware.git
synced 2025-10-31 07:51:08 -04:00
コア2の0ページプロテクション対応。
git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_firmware@238 b871894f-2f95-9b40-918c-086798483c85
This commit is contained in:
parent
c090790728
commit
d81cc409cc
@ -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) );
|
||||
}
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user