diff --git a/trunk/bootrom/build/libraries/os/ARM11/os_interrupt.c b/trunk/bootrom/build/libraries/os/ARM11/os_interrupt.c index fcb7312..6c201a5 100644 --- a/trunk/bootrom/build/libraries/os/ARM11/os_interrupt.c +++ b/trunk/bootrom/build/libraries/os/ARM11/os_interrupt.c @@ -17,6 +17,8 @@ #include +asm void i_osIrqVeneer( void ); + /*---------------------------------------------------------------------------* Name: osInitInterrupt @@ -39,6 +41,8 @@ void osInitInterrupt( void ) osInitInterruptTable(); + *(u64*)HW_INTR_VENEER_BUF = *(u64*)i_osIrqVeneer; + { u32 num = OS_INTR_ID_NUM; u32 conf = 0; @@ -72,6 +76,26 @@ void osInitInterrupt( void ) } } +/*---------------------------------------------------------------------------* + Name: i_osIrqVeneer + + Description: Interrupt Vevver + + Arguments: None + + Returns: None + *---------------------------------------------------------------------------*/ +#include + +asm void i_osIrqVeneer( void ) +{ + INASM_EXTERN( osIrqHandler ) + + ldr pc, =osIrqHandler + LTORG +} + +#include /*---------------------------------------------------------------------------* Name: osEnableInterruptID diff --git a/trunk/bootrom/build/libraries/os/ARM9/os_interrupt.c b/trunk/bootrom/build/libraries/os/ARM9/os_interrupt.c index cec0179..eef8648 100644 --- a/trunk/bootrom/build/libraries/os/ARM9/os_interrupt.c +++ b/trunk/bootrom/build/libraries/os/ARM9/os_interrupt.c @@ -17,6 +17,8 @@ #include +asm void i_osIrqVeneer( void ); + /*---------------------------------------------------------------------------* Name: osInitInterrupt @@ -39,6 +41,8 @@ void osInitInterrupt( void ) i_osInitInterruptTable(); + *(u64*)HW_INTR_VENEER_BUF = *(u64*)i_osIrqVeneer; + reg_OS_IE = 0; reg_OS_IF = 0xffffffff; @@ -47,6 +51,26 @@ void osInitInterrupt( void ) } } +/*---------------------------------------------------------------------------* + Name: i_osIrqVeneer + + Description: Interrupt Vevver + + Arguments: None + + Returns: None + *---------------------------------------------------------------------------*/ +#include + +asm void i_osIrqVeneer( void ) +{ + INASM_EXTERN( osIrqHandler ) + + ldr pc, =osIrqHandler + LTORG +} + +#include //================================================================================ // InterruptMask diff --git a/trunk/bootrom/build/libraries/os/ARM9/os_irqHandler.c b/trunk/bootrom/build/libraries/os/ARM9/os_irqHandler.c index 1538172..6e3ef71 100644 --- a/trunk/bootrom/build/libraries/os/ARM9/os_irqHandler.c +++ b/trunk/bootrom/build/libraries/os/ARM9/os_irqHandler.c @@ -23,7 +23,7 @@ #endif //---- thread queue for interrupt -OSThreadQueue OSi_IrqThreadQueue; // = { NULL, NULL }; +OSThreadQueue OSi_IrqThreadQueue; #ifdef SDK_ARM9 #include