34 #define KERNEL_CODE_SEGMENT 0x08
35 #define KERNEL_DATA_SEGMENT 0x10
36 #define KERNEL_STACK_SEGMENT (KERNEL_DATA_SEGMENT)
39 #define USER_CODE_SEGMENT 0x1B
40 #define USER_DATA_SEGMENT 0x23
41 #define USER_STACK_SEGMENT (USER_DATA_SEGMENT)
73 } __attribute__ ((packed, aligned (8)));
77 uint16_t previous_task, __previous_task_unused;
85 uint32_t eip, eflags, eax, ecx, edx, ebx, esp, ebp, esi, edi;
92 uint16_t ldt_selector, __ldt_sel_unused;
94 } __attribute__ ((packed))
tss_t;
103 void init_tss(
uint32_t stack_address);
104 tss_t* get_default_tss();
uint8_t base_address_23_16
Definition: gdt.h:61
uint8_t available
Definition: gdt.h:67
uint8_t descriptor_type
Definition: gdt.h:63
uint8_t segment_limit_19_16
Definition: gdt.h:66
unsigned short int uint16_t
Definition: types.h:35
uint8_t dpl
Definition: gdt.h:64
void gdt_setup(size_t ram_size)
Definition: gdt.c:137
uint16_t base_address_15_0
Definition: gdt.h:57
uint8_t zero
Definition: gdt.h:68
uint8_t granularity
Definition: gdt.h:70
uint8_t segment_type
Definition: gdt.h:62
unsigned char uint8_t
Definition: types.h:34
uint16_t segment_limit_15_0
Definition: gdt.h:54
uint8_t base_address_31_24
Definition: gdt.h:71
uint8_t present
Definition: gdt.h:65
unsigned long int uint32_t
Definition: types.h:36
Segment Descriptor (cf doc intel v3. 3.4.3)
Definition: gdt.h:51
uint8_t operation_size
Definition: gdt.h:69