X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/7804c2dae30700296c3205aaf7f546f491999bf4..b26d3165c52589d1f8de37bf0df27ad96f460f47:/lunaix-os/arch/i386/includes/sys/interrupts.h diff --git a/lunaix-os/arch/i386/includes/sys/interrupts.h b/lunaix-os/arch/i386/includes/sys/interrupts.h new file mode 100644 index 0000000..003a2cd --- /dev/null +++ b/lunaix-os/arch/i386/includes/sys/interrupts.h @@ -0,0 +1,56 @@ +#ifndef __LUNAIX_INTERRUPTS_H +#define __LUNAIX_INTERRUPTS_H + +#include "vectors.h" + +#ifndef __ASM__ +#include + +struct exec_param; + +struct regcontext +{ + u32_t eax; + u32_t ebx; + u32_t ecx; + u32_t edx; + u32_t edi; + u32_t ebp; + u32_t esi; + u32_t ds; + u32_t es; + u32_t fs; + u32_t gs; +} __attribute__((packed)); + +typedef struct +{ + unsigned int depth; + struct regcontext registers; + union + { + u32_t esp; + volatile struct exec_param* execp; + }; +} __attribute__((packed)) isr_param; + +struct exec_param +{ + isr_param* saved_prev_ctx; + u32_t vector; + u32_t err_code; + u32_t eip; + u32_t cs; + u32_t eflags; + u32_t esp; + u32_t ss; +} __attribute__((packed)); + +#define ISR_PARAM_SIZE sizeof(isr_param) + +void +exception_init(); + +#endif + +#endif /* __LUNAIX_INTERRUPTS_H */