X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/9406e904ddad5db2ba2dd550e21bbb224899fd79..98fd6cb58b5bbc55cd9ceb45bd27b45a3b222df7:/lunaix-os/includes/arch/x86/interrupts.h?ds=sidebyside diff --git a/lunaix-os/includes/arch/x86/interrupts.h b/lunaix-os/includes/arch/x86/interrupts.h index 6265720..395cfe2 100644 --- a/lunaix-os/includes/arch/x86/interrupts.h +++ b/lunaix-os/includes/arch/x86/interrupts.h @@ -1,30 +1,13 @@ #ifndef __LUNAIX_INTERRUPTS_H #define __LUNAIX_INTERRUPTS_H -#define FAULT_DIVISION_ERROR 0x0 -#define FAULT_TRAP_DEBUG_EXCEPTION 0x1 -#define INT_NMI 0x2 -#define TRAP_BREAKPOINT 0x3 -#define TRAP_OVERFLOW 0x4 -#define FAULT_BOUND_EXCEED 0x5 -#define FAULT_INVALID_OPCODE 0x6 -#define FAULT_NO_MATH_PROCESSOR 0x7 -#define ABORT_DOUBLE_FAULT 0x8 -#define FAULT_RESERVED_0 0x9 -#define FAULT_INVALID_TSS 0xa -#define FAULT_SEG_NOT_PRESENT 0xb -#define FAULT_STACK_SEG_FAULT 0xc -#define FAULT_GENERAL_PROTECTION 0xd -#define FAULT_PAGE_FAULT 0xe -#define FAULT_RESERVED_1 0xf -#define FAULT_X87_FAULT 0x10 -#define FAULT_ALIGNMENT_CHECK 0x11 -#define ABORT_MACHINE_CHECK 0x12 -#define FAULT_SIMD_FP_EXCEPTION 0x13 -#define FAULT_VIRTUALIZATION_EXCEPTION 0x14 -#define FAULT_CONTROL_PROTECTION 0x15 - -typedef struct { +#include "vectors.h" + +#ifndef __ASM__ +#include + +struct exec_param +{ unsigned int vector; unsigned int err_code; unsigned int eip; @@ -32,15 +15,39 @@ typedef struct { unsigned int eflags; unsigned int esp; unsigned int ss; +} __attribute__((packed)); + +typedef struct +{ + struct + { + reg32 eax; + reg32 ebx; + reg32 ecx; + reg32 edx; + reg32 edi; + reg32 ebp; + reg32 esi; + reg32 ds; + reg32 es; + reg32 fs; + reg32 gs; + // reg32 esp; + } __attribute__((packed)) registers; + + union + { + reg32 esp; + struct exec_param* execp; + }; } __attribute__((packed)) isr_param; void -_asm_isr0(); +intr_handler(isr_param* param); void -_asm_isr13(); +intr_routine_init(); -void -interrupt_handler(isr_param* param); +#endif #endif /* __LUNAIX_INTERRUPTS_H */