interrupts: IPL_IGNORE which doesn't raise nor lower the IPL on an interrupt

This commit is contained in:
Matheus
2023-06-27 20:03:57 -03:00
parent 98fc4eb23d
commit 0185572afc
5 changed files with 9 additions and 6 deletions
+5 -2
View File
@@ -30,12 +30,15 @@ static void insertinqueue(isr_t *isr) {
}
static void runisr(isr_t *isr, context_t *ctx) {
long oldipl = interrupt_raiseipl(isr->priority);
long oldipl = -1;
if (isr->priority != IPL_IGNORE)
oldipl = interrupt_raiseipl(isr->priority);
isr->func(isr, ctx);
interrupt_set(false);
interrupt_loweripl(oldipl);
if (isr->priority != IPL_IGNORE)
interrupt_loweripl(oldipl);
}
static void dopending(context_t *ctx) {