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 )
|
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();
|
osInitException();
|
||||||
osInitBROM();
|
osInitBROM();
|
||||||
|
|
||||||
@ -39,18 +43,18 @@ void BromMain( void )
|
|||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
OSTick tick = osGetTick();
|
OSTick tick = osGetTick();
|
||||||
u32 mon[OS_MONITOR_NUM];
|
u32 pmon[OS_MONITOR_NUM];
|
||||||
mon[0] = osGetPerfMonitor( OS_MONITOR_0 );
|
pmon[0] = osGetPerfMonitor( OS_MONITOR_0 );
|
||||||
mon[1] = osGetPerfMonitor( OS_MONITOR_1 );
|
pmon[1] = osGetPerfMonitor( OS_MONITOR_1 );
|
||||||
mon[2] = osGetPerfMonitor( OS_MONITOR_2 );
|
pmon[2] = osGetPerfMonitor( OS_MONITOR_2 );
|
||||||
osWaitInterruptID( TRUE, OSi_ALARM_IE_TIMER_ID );
|
osWaitInterruptID( TRUE, OSi_ALARM_IE_TIMER_ID );
|
||||||
mon[0] = osGetPerfMonitor( OS_MONITOR_0 ) - mon[0];
|
pmon[0] = osGetPerfMonitor( OS_MONITOR_0 ) - pmon[0];
|
||||||
mon[1] = osGetPerfMonitor( OS_MONITOR_1 ) - mon[1];
|
pmon[1] = osGetPerfMonitor( OS_MONITOR_1 ) - pmon[1];
|
||||||
mon[2] = osGetPerfMonitor( OS_MONITOR_2 ) - mon[2];
|
pmon[2] = osGetPerfMonitor( OS_MONITOR_2 ) - pmon[2];
|
||||||
tick = osGetTick() - tick;
|
tick = osGetTick() - tick;
|
||||||
osTPrintf( "wait mon0 = %llu msec\n", OS_TICK_TO_MSEC(mon[0]) ); // MG20ではパフォーマンスモニタのクロックが違う
|
osTPrintf( "wait mon0 = %llu msec\n", OS_TICK_TO_MSEC(pmon[0]) );
|
||||||
osTPrintf( "wait mon1 = %llu msec\n", OS_TICK_TO_MSEC(mon[1]) );
|
osTPrintf( "wait mon1 = %llu msec\n", OS_TICK_TO_MSEC(pmon[1]) );
|
||||||
osTPrintf( "wait mon2 = %llu msec\n", OS_TICK_TO_MSEC(mon[2]) );
|
osTPrintf( "wait mon2 = %llu msec\n", OS_TICK_TO_MSEC(pmon[2]) );
|
||||||
osTPrintf( "wait tick = %llu msec\n", OS_TICK_TO_MSEC(tick) );
|
osTPrintf( "wait tick = %llu msec\n", OS_TICK_TO_MSEC(tick) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -73,13 +73,13 @@ stupStartHandlerVeneer
|
|||||||
LSYM(1) beq BSYM(1)
|
LSYM(1) beq BSYM(1)
|
||||||
|
|
||||||
//---- enable performance monitor
|
//---- enable performance monitor
|
||||||
|
// カウンタ0/1は乱数の要素として使えるかもしれないのでリセットしない
|
||||||
mrc p15, 0, r0, c15, c12, 0
|
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_COUNT0_EVT_SFT) | \
|
||||||
(HW_C15_EVT_INC_EACH_CYCLE << HW_C15_COUNT1_EVT_SFT) | \
|
(HW_C15_EVT_INC_EACH_CYCLE << HW_C15_COUNT1_EVT_SFT) | \
|
||||||
HW_C15_CYCLE_COUNT_D64
|
HW_C15_CYCLE_COUNT_D64
|
||||||
orr r0, r0, r1
|
orr r0, r0, r1
|
||||||
// bic r0, r0, #HW_C15_CYCLE_COUNT_D64
|
|
||||||
mcr p15, 0, r0, c15, c12, 0
|
mcr p15, 0, r0, c15, c12, 0
|
||||||
|
|
||||||
//---- check CPU-ID
|
//---- check CPU-ID
|
||||||
@ -87,14 +87,12 @@ LSYM(1) beq BSYM(1)
|
|||||||
tst r2, #HW_C0_AP_CPU_ID_MASK
|
tst r2, #HW_C0_AP_CPU_ID_MASK
|
||||||
beq core0_start
|
beq core0_start
|
||||||
|
|
||||||
#ifdef SDK_NE1EMU
|
|
||||||
cmp r2, #1
|
cmp r2, #1
|
||||||
beq core1_start
|
beq core1_start
|
||||||
LSYM(1)
|
LSYM(1)
|
||||||
wfi
|
wfi
|
||||||
nop
|
nop
|
||||||
b BSYM(1)
|
b BSYM(1)
|
||||||
#endif // SDK_NE1EMU
|
|
||||||
|
|
||||||
core1_start
|
core1_start
|
||||||
//---- Wait for IPI
|
//---- Wait for IPI
|
||||||
@ -113,13 +111,15 @@ core1_start
|
|||||||
mov r1, r1, lsl r2
|
mov r1, r1, lsl r2
|
||||||
mov r0, #~0
|
mov r0, #~0
|
||||||
str r0, [r3]
|
str r0, [r3]
|
||||||
|
ldr lr, =HW_START_VECTOR1_BUF
|
||||||
|
|
||||||
|
// これ以降は0ページプロテクション領域を参照しないこと
|
||||||
LSYM(10)
|
LSYM(10)
|
||||||
wfi
|
wfi
|
||||||
nop
|
nop
|
||||||
ldr r0, [r3]
|
ldr r0, [r3]
|
||||||
tst r0, r1
|
tst r0, r1
|
||||||
beq BSYM(10)
|
beq BSYM(10)
|
||||||
ldr lr, =HW_START_VECTOR1_BUF
|
|
||||||
ldr lr, [lr]
|
ldr lr, [lr]
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user