summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/arm/nds/libnds/source/common/interrupts.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/arm/nds/libnds/source/common/interrupts.c')
-rw-r--r--c/src/lib/libbsp/arm/nds/libnds/source/common/interrupts.c145
1 files changed, 0 insertions, 145 deletions
diff --git a/c/src/lib/libbsp/arm/nds/libnds/source/common/interrupts.c b/c/src/lib/libbsp/arm/nds/libnds/source/common/interrupts.c
deleted file mode 100644
index 7e42ebf942..0000000000
--- a/c/src/lib/libbsp/arm/nds/libnds/source/common/interrupts.c
+++ /dev/null
@@ -1,145 +0,0 @@
-/*---------------------------------------------------------------------------------
- Copyright (C) 2005
- Dave Murphy (WinterMute)
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any
- damages arising from the use of this software.
-
- Permission is granted to anyone to use this software for any
- purpose, including commercial applications, and to alter it and
- redistribute it freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you
- must not claim that you wrote the original software. If you use
- this software in a product, an acknowledgment in the product
- documentation would be appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and
- must not be misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source
- distribution.
-
----------------------------------------------------------------------------------*/
-
-#include <nds/interrupts.h>
-#include <nds/system.h>
-
-void IntrMain(void); // Prototype for assembly interrupt dispatcher
-
-static void irqDummy(void) {}
-
-
-#ifdef ARM9
-#define INT_TABLE_SECTION __attribute__((section(".bsp_fast_text")))
-#else
-#define INT_TABLE_SECTION
-#endif
-
-struct IntTable irqTable[MAX_INTERRUPTS] INT_TABLE_SECTION;
-
-//---------------------------------------------------------------------------------
-void irqSet(int mask, IntFn handler) {
-//---------------------------------------------------------------------------------
- if (!mask) return;
-
- int i;
-
- for (i=0;i<MAX_INTERRUPTS;i++)
- if (!irqTable[i].mask || irqTable[i].mask == mask) break;
-
- if ( i == MAX_INTERRUPTS ) return;
-
- irqTable[i].handler = handler;
- irqTable[i].mask = mask;
-
- if(mask & IRQ_VBLANK)
- REG_DISPSTAT |= DISP_VBLANK_IRQ ;
- if(mask & IRQ_HBLANK)
- REG_DISPSTAT |= DISP_HBLANK_IRQ ;
-
- REG_IE |= mask;
-}
-
-//---------------------------------------------------------------------------------
-void irqInit() {
-//---------------------------------------------------------------------------------
- int i;
-
- // Set all interrupts to dummy functions.
- for(i = 0; i < MAX_INTERRUPTS; i ++)
- {
- irqTable[i].handler = irqDummy;
- irqTable[i].mask = 0;
- }
-
- IRQ_HANDLER = IntrMain;
-
- REG_IE = 0; // disable all interrupts
- REG_IF = IRQ_ALL; // clear all pending interrupts
- REG_IME = 1; // enable global interrupt
-
-}
-
-
-//---------------------------------------------------------------------------------
-void irqClear(int mask) {
-//---------------------------------------------------------------------------------
- int i = 0;
-
- for (i=0;i<MAX_INTERRUPTS;i++)
- if (irqTable[i].mask == mask) break;
-
- if ( i == MAX_INTERRUPTS ) return;
-
- irqTable[i].handler = irqDummy;
-
- if (mask & IRQ_VBLANK)
- REG_DISPSTAT &= ~DISP_VBLANK_IRQ ;
- if (mask & IRQ_HBLANK)
- REG_DISPSTAT &= ~DISP_HBLANK_IRQ ;
- if (mask & IRQ_VCOUNT)
- REG_DISPSTAT &= ~DISP_YTRIGGER_IRQ;
-
- REG_IE &= ~mask;
-}
-
-
-//---------------------------------------------------------------------------------
-void irqInitHandler(IntFn handler) {
-//---------------------------------------------------------------------------------
- REG_IME = 0;
- REG_IF = ~0;
- REG_IE = 0;
-
- IRQ_HANDLER = handler;
-
- REG_IME = 1;
-}
-
-//---------------------------------------------------------------------------------
-void irqEnable(uint32 irq) {
-//---------------------------------------------------------------------------------
- if (irq & IRQ_VBLANK)
- REG_DISPSTAT |= DISP_VBLANK_IRQ ;
- if (irq & IRQ_HBLANK)
- REG_DISPSTAT |= DISP_HBLANK_IRQ ;
- if (irq & IRQ_VCOUNT)
- REG_DISPSTAT |= DISP_YTRIGGER_IRQ;
-
- REG_IE |= irq;
- REG_IME = 1;
-}
-
-//---------------------------------------------------------------------------------
-void irqDisable(uint32 irq) {
-//---------------------------------------------------------------------------------
- if (irq & IRQ_VBLANK)
- REG_DISPSTAT &= ~DISP_VBLANK_IRQ ;
- if (irq & IRQ_HBLANK)
- REG_DISPSTAT &= ~DISP_HBLANK_IRQ ;
- if (irq & IRQ_VCOUNT)
- REG_DISPSTAT &= ~DISP_YTRIGGER_IRQ;
-
- REG_IE &= ~irq;
-}
-