X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/98fd6cb58b5bbc55cd9ceb45bd27b45a3b222df7..8c6f505faaa66e18cdca108dca549d4ad806a077:/lunaix-os/includes/arch/x86/interrupts.h?ds=inline diff --git a/lunaix-os/includes/arch/x86/interrupts.h b/lunaix-os/includes/arch/x86/interrupts.h index 395cfe2..f1684a8 100644 --- a/lunaix-os/includes/arch/x86/interrupts.h +++ b/lunaix-os/includes/arch/x86/interrupts.h @@ -6,19 +6,11 @@ #ifndef __ASM__ #include -struct exec_param -{ - unsigned int vector; - unsigned int err_code; - unsigned int eip; - unsigned int cs; - unsigned int eflags; - unsigned int esp; - unsigned int ss; -} __attribute__((packed)); +struct exec_param; typedef struct { + unsigned int depth; struct { reg32 eax; @@ -32,16 +24,29 @@ typedef struct reg32 es; reg32 fs; reg32 gs; - // reg32 esp; } __attribute__((packed)) registers; union { reg32 esp; - struct exec_param* execp; + volatile struct exec_param* execp; }; } __attribute__((packed)) isr_param; +struct exec_param +{ + isr_param saved_prev_ctx; + unsigned int vector; + unsigned int err_code; + unsigned int eip; + unsigned int cs; + unsigned int eflags; + unsigned int esp; + unsigned int ss; +} __attribute__((packed)); + +#define ISR_PARAM_SIZE sizeof(isr_param) + void intr_handler(isr_param* param);