diff --git a/trunk/bootrom/build/libraries/os/ARM11/os_irqHandler.c b/trunk/bootrom/build/libraries/os/ARM11/os_irqHandler.c index 4ebfa21..caed100 100644 --- a/trunk/bootrom/build/libraries/os/ARM11/os_irqHandler.c +++ b/trunk/bootrom/build/libraries/os/ARM11/os_irqHandler.c @@ -39,9 +39,10 @@ asm void osIrqHandler( void ) INASM_EXTERN( osIntrTable ) - sub lr, lr, #4 // 復帰アドレス調整 + // 不正確データアボート有効化(clear HW_PSR_IMPRECISE_ABORT) + msr cpsr_fsxc, #(HW_PSR_IRQ_MODE | HW_PSR_IRQ_DISABLE | HW_PSR_FIQ_DISABLE) + stmfd sp!, { r0-r4,r12,lr } -// stmfd sp!, { lr } // save LR // 割り込み要因の判定. @@ -68,10 +69,8 @@ asm void osIrqHandler( void ) #endif // BROM_ENABLE_THREAD my_undefined_interrupt_1 -// ldmfd sp!, { lr } ldmfd sp!, { r0-r4,r12,lr } // return to interrupted address - movs pc, lr -// subs pc, lr, #4 + subs pc, lr, #4 } #ifdef BROM_ENABLE_THREAD diff --git a/trunk/bootrom/build/libraries/os/ARM11/os_timer.c b/trunk/bootrom/build/libraries/os/ARM11/os_timer.c index 62dc60e..7256ee9 100644 --- a/trunk/bootrom/build/libraries/os/ARM11/os_timer.c +++ b/trunk/bootrom/build/libraries/os/ARM11/os_timer.c @@ -105,7 +105,7 @@ void osStartTimerWithUSec( u32 usec, u8 preScale ) { u32 count = ((usec) * (osTimerClock / 1000)) / (preScale+1) / 1000; - i_osStartTimer( count, preScale, OS_TM_SINGLE_SHOT, OS_TM_INTR_REQ_ENABLE ); + i_osStartTimer( count, preScale, OS_TM_AUTO_RELOAD, OS_TM_INTR_REQ_ENABLE ); } /*---------------------------------------------------------------------------* @@ -122,7 +122,7 @@ void osStartTimerWithMSec( u32 msec, u8 preScale ) { u32 count = (((msec) * osTimerClock / 1000)) / (preScale+1); - i_osStartTimer( count, preScale, OS_TM_SINGLE_SHOT, OS_TM_INTR_REQ_ENABLE ); + i_osStartTimer( count, preScale, OS_TM_AUTO_RELOAD, OS_TM_INTR_REQ_ENABLE ); } /*---------------------------------------------------------------------------* @@ -137,7 +137,7 @@ void osStartTimerWithMSec( u32 msec, u8 preScale ) void osStartTimer( u32 count, u8 preScale ) { - i_osStartTimer( count, preScale, OS_TM_SINGLE_SHOT, OS_TM_INTR_REQ_ENABLE ); + i_osStartTimer( count, preScale, OS_TM_AUTO_RELOAD, OS_TM_INTR_REQ_ENABLE ); } /*---------------------------------------------------------------------------*