| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | 
							- #pragma once
 
- #include <types/types.h>
 
- #ifdef __cplusplus
 
- extern "C" {
 
- #endif
 
- #define KERNEL_INTERRUPT_GATE_TYPE (0x8e)
 
- #define USER_INTERRUPT_GATE_TYPE (0xee)
 
- #define PIC_EOI (0x20)
 
- struct regs_64 {
 
-     uint64_t rax;
 
-     uint64_t rbx;
 
-     uint64_t rcx;
 
-     uint64_t rdx;
 
-     uint64_t rsi;
 
-     uint64_t rdi;
 
-     uint64_t rsp;
 
-     uint64_t rbp;
 
-     uint64_t r8;
 
-     uint64_t r9;
 
-     uint64_t r10;
 
-     uint64_t r11;
 
-     uint64_t r12;
 
-     uint64_t r13;
 
-     uint64_t r14;
 
-     uint64_t r15;
 
- };
 
- struct interrupt_stack {
 
-     regs_64 s_regs;
 
-     void* v_rip;
 
-     uint64_t cs;
 
-     uint64_t flags;
 
-     uint64_t rsp;
 
-     uint64_t ss;
 
- };
 
- struct mmx_registers {
 
-     uint8_t data[512]; // TODO: list of content
 
- };
 
- // present: When set, the page fault was caused by a page-protection violation.
 
- //          When not set, it was caused by a non-present page.
 
- // write:   When set, the page fault was caused by a write access.
 
- //          When not set, it was caused by a read access.
 
- // user:    When set, the page fault was caused while CPL = 3.
 
- //          This does not necessarily mean that the page fault was a privilege violation.
 
- // from https://wiki.osdev.org/Exceptions#Page_Fault
 
- struct page_fault_error_code {
 
-     uint32_t present : 1;
 
-     uint32_t write : 1;
 
-     uint32_t user : 1;
 
-     uint32_t reserved_write : 1;
 
-     uint32_t instruction_fetch : 1;
 
-     uint32_t protection_key : 1;
 
-     uint32_t shadow_stack : 1;
 
-     uint32_t software_guard_extensions : 1;
 
- };
 
- void init_idt(void);
 
- void init_pic(void);
 
- #ifdef __cplusplus
 
- }
 
- #endif
 
 
  |