From e356cbe011235741b7b455b6580b32233cb6c172 Mon Sep 17 00:00:00 2001 From: nakasima Date: Fri, 12 Dec 2008 08:17:53 +0000 Subject: [PATCH] =?UTF-8?q?=E5=89=B2=E3=82=8A=E8=BE=BC=E3=81=BF=E3=83=8F?= =?UTF-8?q?=E3=83=B3=E3=83=89=E3=83=A9=E5=86=85=E3=81=A7=E3=81=AE=E4=B8=8D?= =?UTF-8?q?=E6=AD=A3=E7=A2=BA=E3=82=A2=E3=83=9C=E3=83=BC=E3=83=88=E6=9C=89?= =?UTF-8?q?=E5=8A=B9=E5=8C=96=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_firmware@103 b871894f-2f95-9b40-918c-086798483c85 --- trunk/bootrom/build/libraries/os/ARM11/os_irqHandler.c | 9 ++++----- trunk/bootrom/build/libraries/os/ARM11/os_timer.c | 6 +++--- 2 files changed, 7 insertions(+), 8 deletions(-) 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 ); } /*---------------------------------------------------------------------------*