mirror of
https://github.com/Mathewnd/Astral.git
synced 2026-11-02 07:28:21 +00:00
interrupt: do userspace check on interrupt return to userspace
This commit is contained in:
@@ -95,6 +95,7 @@ static void dopending(context_t *ctx) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__attribute__((no_caller_saved_registers)) void sched_userspacecheck(context_t *context);
|
||||||
|
|
||||||
void interrupt_isr(int vec, context_t *ctx) {
|
void interrupt_isr(int vec, context_t *ctx) {
|
||||||
isr_t *isr = &_cpu()->isr[vec];
|
isr_t *isr = &_cpu()->isr[vec];
|
||||||
@@ -114,6 +115,9 @@ void interrupt_isr(int vec, context_t *ctx) {
|
|||||||
if (isr->eoi)
|
if (isr->eoi)
|
||||||
isr->eoi(isr);
|
isr->eoi(isr);
|
||||||
|
|
||||||
|
if (ARCH_CONTEXT_ISUSER(ctx))
|
||||||
|
sched_userspacecheck(ctx);
|
||||||
|
|
||||||
_cpu()->intstatus = ARCH_CONTEXT_INTSTATUS(ctx);
|
_cpu()->intstatus = ARCH_CONTEXT_INTSTATUS(ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user