diff options
author | red031000 <rubenru09@aol.com> | 2021-07-23 01:11:15 +0100 |
---|---|---|
committer | red031000 <rubenru09@aol.com> | 2021-07-23 01:12:27 +0100 |
commit | 5bf13c7f48fe91c7902ce50250bc1a5a2398a2ae (patch) | |
tree | 2e91e60bdb7a9174b16d8ca1b532809d4ae2e5b6 /arm9/lib/NitroSDK/src/OS_irqTable.c | |
parent | c2d91a2d997afd01fa4f40e1e16d5ee85557c9a8 (diff) |
separate out libs to libc, libnns and NitroSDK
Diffstat (limited to 'arm9/lib/NitroSDK/src/OS_irqTable.c')
-rw-r--r-- | arm9/lib/NitroSDK/src/OS_irqTable.c | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/arm9/lib/NitroSDK/src/OS_irqTable.c b/arm9/lib/NitroSDK/src/OS_irqTable.c new file mode 100644 index 00000000..cc2a3a55 --- /dev/null +++ b/arm9/lib/NitroSDK/src/OS_irqTable.c @@ -0,0 +1,110 @@ +#include "function_target.h" +#include "sections.h" +#include "OS_irqTable.h" + +#pragma section DTCM begin +OSIrqFunction OS_IRQTable[22] = { + OS_IrqDummy, + OS_IrqDummy, + OS_IrqDummy, + OSi_IrqTimer0, + OSi_IrqTimer1, + OSi_IrqTimer2, + OSi_IrqTimer3, + OS_IrqDummy, + OSi_IrqDma0, + OSi_IrqDma1, + OSi_IrqDma2, + OSi_IrqDma3, + OS_IrqDummy, + OS_IrqDummy, + OS_IrqDummy, + OS_IrqDummy, + OS_IrqDummy, + OS_IrqDummy, + OS_IrqDummy, + OS_IrqDummy, + OS_IrqDummy, + OS_IrqDummy +}; +#pragma section DTCM end + +OSIrqCallbackInfo OSi_IrqCallbackInfo[8] = { + {NULL, 0, 0}, + {NULL, 0, 0}, + {NULL, 0, 0}, + {NULL, 0, 0}, + {NULL, 0, 0}, + {NULL, 0, 0}, + {NULL, 0, 0}, + {NULL, 0, 0}, +}; + +static u16 OSi_IrqCallbackInfoIndex[8] = { + 8, 9, 10, 11, 3, 4, 5, 6 +}; + +ARM_FUNC void OS_IrqDummy(void) +{ + //noop +} + +ARM_FUNC void OSi_IrqCallback(s32 index) +{ + OSIrqMask mask = (1UL << OSi_IrqCallbackInfoIndex[index]); + void (*callback)(void *) = OSi_IrqCallbackInfo[index].func; + + OSi_IrqCallbackInfo[index].func = NULL; + + if (callback) + { + (callback)(OSi_IrqCallbackInfo[index].arg); + } + + OS_SetIrqCheckFlag(mask); + + if (!OSi_IrqCallbackInfo[index].enable) + { + (void)OS_DisableIrqMask(mask); + } +} + +ARM_FUNC void OSi_IrqDma0(void) +{ + OSi_IrqCallback(0); +} + +ARM_FUNC void OSi_IrqDma1(void) +{ + OSi_IrqCallback(1); +} + +ARM_FUNC void OSi_IrqDma2(void) +{ + OSi_IrqCallback(2); +} + +ARM_FUNC void OSi_IrqDma3(void) +{ + OSi_IrqCallback(3); +} + +ARM_FUNC void OSi_IrqTimer0(void) +{ + OSi_IrqCallback(4); +} + +ARM_FUNC void OSi_IrqTimer1(void) +{ + OSi_IrqCallback(5); +} + +ARM_FUNC void OSi_IrqTimer2(void) +{ + OSi_IrqCallback(6); +} + +ARM_FUNC void OSi_IrqTimer3(void) +{ + OSi_IrqCallback(7); +} |