fix: previous interrupt context lost after a nested interrupt
[lunaix-os.git] / lunaix-os / kernel / asm / x86 / interrupts.c
index b4a443f10376812bd94cb3abb4051fe090b1ee08..3fb24cbc054eab3d955078da2a27d42d35ee00e7 100644 (file)
@@ -19,9 +19,10 @@ extern x86_page_table* __kernel_ptd;
 void
 intr_handler(isr_param* param)
 {
+    param->execp->saved_prev_ctx = __current->intr_ctx;
     __current->intr_ctx = *param;
 
-    struct exec_param* execp = __current->intr_ctx.execp;
+    volatile struct exec_param* execp = __current->intr_ctx.execp;
 
     if (execp->vector <= 255) {
         isr_cb subscriber = isrm_get(execp->vector);