Untitled_Kernel/include/kdtables.h
lordtet d32c1fab63 dude PLEASE i dont want to implement ISRs dude PLEASEEEEE
I did set up all of the stuff around it tho. Gotta implement some
handlers.
2025-06-12 01:19:59 -04:00

64 lines
1.1 KiB
C

/* kdtables.h
* Kernel Discriptor Tables
*
* Contains GDT, IDT, and any relevant functions and structs pertaining to them
*
*/
#ifndef KDTABLES_H
#define KDTABLES_H
#include <stdint.h>
// TSS
typedef struct tss_s {
uint32_t LINK;
uint32_t ESP0;
uint32_t SS0;
uint32_t ESP1;
uint32_t SS1;
uint32_t ESP2;
uint32_t SS2;
uint32_t CR3;
uint32_t EIP;
uint32_t EFLAGS;
uint32_t EAX;
uint32_t ECX;
uint32_t EDX;
uint32_t EBX;
uint32_t ESP;
uint32_t ESI;
uint32_t EDI;
uint32_t ES;
uint32_t CS;
uint32_t SS;
uint32_t DS;
uint32_t FS;
uint32_t GS;
uint32_t LDTR;
uint32_t IOPB;
uint32_t SSP;
} __attribute__((packed)) tss_t;
extern tss_t tss;
//IDT
typedef struct InterruptDescriptor_s {
uint16_t offset_1;
uint16_t selector;
uint8_t reserved;
uint8_t attributes;
uint16_t offset_2;
} InterruptDescriptor_t;
typedef struct IDTR_s {
uint16_t size;
InterruptDescriptor_t* IDT;
} IDTR_t;
extern IDTR_t idtr;
void setup_idt();
void write_descriptors();
void load_idt();
#endif