割り込み修正。

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:
nakasima 2008-12-12 07:53:40 +00:00
parent 01ca849543
commit 44d00544fa
3 changed files with 14 additions and 11 deletions

View File

@ -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();
}
}

View File

@ -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

View File

@ -94,7 +94,7 @@ void osInitTick(void)
osEnableInterruptID(OSi_TICK_IE_TIMER_ID);
//---- need to reset
i_osNeedResetTimer = FALSE;
i_osNeedResetTimer = TRUE;
}
}