From 53dd5bc0de0fb2237c57520971a7854e0dde5902 Mon Sep 17 00:00:00 2001 From: red031000 Date: Thu, 28 May 2020 18:55:41 +0100 Subject: OS_irqHandler --- arm9/lib/src/OS_irqHandler.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 arm9/lib/src/OS_irqHandler.c (limited to 'arm9/lib/src/OS_irqHandler.c') diff --git a/arm9/lib/src/OS_irqHandler.c b/arm9/lib/src/OS_irqHandler.c new file mode 100644 index 00000000..31f4453e --- /dev/null +++ b/arm9/lib/src/OS_irqHandler.c @@ -0,0 +1,24 @@ +#include "function_target.h" +#include "OS_irqHandler.h" +#include "OS_system.h" +#include "OS_thread.h" +#include "sections.h" + +#pragma section DTCM begin +OSThreadQueue OSi_IrqThreadQueue = { NULL, NULL }; +#pragma section DTCM end + +ARM_FUNC void OS_WaitIrq(BOOL clear, OSIrqMask irqFlags) +{ + OSIntrMode lastIntrMode = OS_DisableInterrupts(); + if (clear) + { + OS_ClearIrqCheckFlag(irqFlags); + } + (void)OS_RestoreInterrupts(lastIntrMode); + + while (!(OS_GetIrqCheckFlag() & irqFlags)) + { + OS_SleepThread(&OSi_IrqThreadQueue); + } +} -- cgit v1.2.3