mirror of
https://github.com/rvtr/ctr_firmware.git
synced 2025-10-31 07:51:08 -04:00
割り込み修正。
git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_firmware@102 b871894f-2f95-9b40-918c-086798483c85
This commit is contained in:
parent
01ca849543
commit
44d00544fa
@ -74,6 +74,8 @@ void osInitInterrupt( void )
|
||||
reg_OS_CPUI_PRIO = 15 << REG_OS_CPUI_PRIO_THLD_SHIFT;
|
||||
reg_OS_CPUI_BP = HW_CPUIBP_CMP_PRIO_ALL_BITS;
|
||||
reg_OS_CPUI_CNT = REG_OS_CPUI_CNT_E_MASK;
|
||||
|
||||
(void)osEnableInterrupts();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -40,8 +40,8 @@ asm void osIrqHandler( void )
|
||||
INASM_EXTERN( osIntrTable )
|
||||
|
||||
sub lr, lr, #4 // 復帰アドレス調整
|
||||
stmfd sp!, { r0-r3,r12,lr }
|
||||
stmfd sp!, { lr } // save LR
|
||||
stmfd sp!, { r0-r4,r12,lr }
|
||||
// stmfd sp!, { lr } // save LR
|
||||
|
||||
// 割り込み要因の判定.
|
||||
|
||||
@ -55,12 +55,10 @@ asm void osIrqHandler( void )
|
||||
|
||||
// get jump vector
|
||||
ldr r1, =osIntrTable
|
||||
ldr r0, [ r1, r0, LSL #2 ]
|
||||
ldr r0, [ r1, r4, LSL #2 ]
|
||||
|
||||
adr lr, irq_return
|
||||
bx r0 // set return address for thread rescheduling
|
||||
blx r0 // set return address for thread rescheduling
|
||||
|
||||
irq_return
|
||||
// End of Interrupt Register
|
||||
ldr lr, =REG_CPUI_EOI_ADDR
|
||||
str r4, [lr]
|
||||
@ -70,8 +68,10 @@ irq_return
|
||||
#endif // BROM_ENABLE_THREAD
|
||||
|
||||
my_undefined_interrupt_1
|
||||
ldmfd sp!, { lr }
|
||||
ldmfd sp!, { r0-r3,r12,pc } // return to interrupted address
|
||||
// ldmfd sp!, { lr }
|
||||
ldmfd sp!, { r0-r4,r12,lr } // return to interrupted address
|
||||
movs pc, lr
|
||||
// subs pc, lr, #4
|
||||
}
|
||||
|
||||
#ifdef BROM_ENABLE_THREAD
|
||||
@ -171,8 +171,9 @@ _dont_switched_
|
||||
mov r3, #HW_PSR_IRQ_MODE|HW_PSR_IRQ_DISABLE|HW_PSR_ARM_STATE
|
||||
msr cpsr_c, r3
|
||||
|
||||
ldmfd sp!, { lr }
|
||||
ldmfd sp!, { r0-r3,r12,pc } // return to interrupted address
|
||||
bx lr
|
||||
// ldmfd sp!, { lr }
|
||||
// ldmfd sp!, { r0-r3,r12,pc } // return to interrupted address
|
||||
// not reach here
|
||||
|
||||
|
||||
|
||||
@ -94,7 +94,7 @@ void osInitTick(void)
|
||||
osEnableInterruptID(OSi_TICK_IE_TIMER_ID);
|
||||
|
||||
//---- need to reset
|
||||
i_osNeedResetTimer = FALSE;
|
||||
i_osNeedResetTimer = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user