#pragma once // ke_idt.h - IDT, GDT, and TSS setup #include // 64-bit TSS - minimal; we only care about RSP0. #pragma pack(push, 1) typedef struct TSS64 { uint32_t Reserved0; uint64_t RSP0; // loaded into RSP on ring-0 entry uint64_t RSP1; uint64_t RSP2; uint64_t Reserved1; uint64_t IST[7]; uint64_t Reserved2; uint16_t Reserved3; uint16_t IoMapBase; } TSS64; #pragma pack(pop) extern TSS64* gTss; void KeInitializeGdt(void); void KeInitializeIdt(void); // Called from hal_timer.c after HPET/APIC timer fires. void KeTimerInterrupt(void); // Syscall entry - implemented in ke_syscall.asm. extern void KeSyscallEntry(void); // Fault stubs installed by KeInitializeIdt. extern void KeFaultDE(void); // #DE divide error extern void KeFaultGP(void); // #GP general protection extern void KeFaultPF(void); // #PF page fault