X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/844a2c39e4bb2cc778dba7bd3aea21cb07483fad..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 b608cd6..f1684a8 100644 --- a/lunaix-os/includes/arch/x86/interrupts.h +++ b/lunaix-os/includes/arch/x86/interrupts.h @@ -1,7 +1,41 @@ #ifndef __LUNAIX_INTERRUPTS_H #define __LUNAIX_INTERRUPTS_H -typedef struct { +#include "vectors.h" + +#ifndef __ASM__ +#include + +struct exec_param; + +typedef struct +{ + unsigned int depth; + struct + { + reg32 eax; + reg32 ebx; + reg32 ecx; + reg32 edx; + reg32 edi; + reg32 ebp; + reg32 esi; + reg32 ds; + reg32 es; + reg32 fs; + reg32 gs; + } __attribute__((packed)) registers; + + union + { + reg32 esp; + 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; @@ -9,12 +43,16 @@ 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 -_asm_isr0(); +intr_handler(isr_param* param); void -interrupt_handler(isr_param* param); +intr_routine_init(); + +#endif #endif /* __LUNAIX_INTERRUPTS_H */