X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/9a7a9c079d0ab0366673beff73ffa710fe3b76c8..0eabc11fcf240415e39f3873dfce7cd9384b3042:/lunaix-os/includes/arch/x86/interrupts.h diff --git a/lunaix-os/includes/arch/x86/interrupts.h b/lunaix-os/includes/arch/x86/interrupts.h index 822b99d..f1684a8 100644 --- a/lunaix-os/includes/arch/x86/interrupts.h +++ b/lunaix-os/includes/arch/x86/interrupts.h @@ -5,8 +5,12 @@ #ifndef __ASM__ #include + +struct exec_param; + typedef struct { + unsigned int depth; struct { reg32 eax; @@ -20,9 +24,18 @@ typedef struct reg32 es; reg32 fs; reg32 gs; + } __attribute__((packed)) registers; + + union + { reg32 esp; - } registers; + 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; @@ -30,7 +43,9 @@ typedef struct unsigned int eflags; unsigned int esp; unsigned int ss; -} __attribute__((packed)) isr_param; +} __attribute__((packed)); + +#define ISR_PARAM_SIZE sizeof(isr_param) void intr_handler(isr_param* param);