TacOS  0.2
 Tout Structures de données Fichiers Fonctions Variables Définitions de type Énumérations Macros
gdt.h
Aller à la documentation de ce fichier.
1 
29 #ifndef _GDT_H_
30 #define _GDT_H_
31 
32 #include <types.h>
33 
34 #define KERNEL_CODE_SEGMENT 0x08
35 #define KERNEL_DATA_SEGMENT 0x10
36 #define KERNEL_STACK_SEGMENT (KERNEL_DATA_SEGMENT)
37 
38 
39 #define USER_CODE_SEGMENT 0x1B
40 #define USER_DATA_SEGMENT 0x23
41 #define USER_STACK_SEGMENT (USER_DATA_SEGMENT)
42 
43 
44 //#define SIZE_OF_GDT_ENTRY 8
45 
52 {
53  /* Double mot de poids faible */
60  /* Double mot de poids fort */
73 } __attribute__ ((packed, aligned (8)));
74 
75 
76 typedef struct tss {
77  uint16_t previous_task, __previous_task_unused;
78  uint32_t esp0;
79  uint16_t ss0, __ss0_unused;
80  uint32_t esp1;
81  uint16_t ss1, __ss1_unused;
82  uint32_t esp2;
83  uint16_t ss2, __ss2_unused;
84  uint32_t cr3;
85  uint32_t eip, eflags, eax, ecx, edx, ebx, esp, ebp, esi, edi;
86  uint16_t es, __es_unused;
87  uint16_t cs, __cs_unused;
88  uint16_t ss, __ss_unused;
89  uint16_t ds, __ds_unused;
90  uint16_t fs, __fs_unused;
91  uint16_t gs, __gs_unused;
92  uint16_t ldt_selector, __ldt_sel_unused;
93  uint16_t debug_flag, io_map;
94 } __attribute__ ((packed)) tss_t;
95 
101 void gdt_setup(size_t ram_size);
102 
103 void init_tss(uint32_t stack_address);
104 tss_t* get_default_tss();
105 
106 #endif
Definition: gdt.h:76
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