SayoriOS  0.3.3
descriptor_tables.h
1 #ifndef DESCRIPTOR_TABLES_H
2 #define DESCRIPTOR_TABLES_H
3 
4 #include "common.h"
5 
7 {
8  uint16_t limit_low;
9  uint16_t base_low;
10  uint8_t base_middle;
11  uint8_t access;
12  uint8_t granularity;
13  uint8_t base_high;
14 
15 }__attribute__((packed));
16 
17 typedef struct gdt_entry_struct gdt_entry_t;
18 
20 {
21  uint16_t limit;
22  uint32_t base;
23 }__attribute__((packed));
24 
25 typedef struct gdt_ptr_struct gdt_ptr_t;
26 
27 struct tss_entry
28 {
29  uint32_t prev_tss;
30  uint32_t esp0; /* Указатель текущего стека ядра */
31  uint32_t ss0; /* Селектор сегмента текущего стека ядра */
32  uint32_t esp1;
33  uint32_t ss1;
34  uint32_t esp2;
35  uint32_t ss2;
36  uint32_t cr3;
37  uint32_t eip;
38  uint32_t eflags;
39  uint32_t eax;
40  uint32_t ecx;
41  uint32_t edx;
42  uint32_t ebx;
43  uint32_t esp;
44  uint32_t ebp;
45  uint32_t esi;
46  uint32_t edi;
47  uint32_t es;
48  uint32_t cs;
49  uint32_t ss;
50  uint32_t ds;
51  uint32_t fs;
52  uint32_t gs;
53  uint32_t ldtr;
54  uint16_t task_flags;
55  uint16_t iomap_offset; /* Смещение от начала TSS до I/O map */
56  uint8_t iomap; /* Байт-терминатор */
57 } __attribute__((packed));
58 
59 typedef struct tss_entry tss_entry_t;
60 
62 {
63  uint16_t limit_15_0; /* Биты 15-0 лимита */
64  uint16_t base_15_0; /* Биты 15-0 базы */
65  uint8_t base_23_16; /* Биты 23-16 базы */
66  uint8_t type:4; /* Тип сегмента */
67  uint8_t sys:1; /* Системный сегмент */
68  uint8_t DPL:2; /* Уровень привилегий сегмента */
69  uint8_t present:1; /* Бит присутствия */
70  uint8_t limit_19_16:4; /* Биты 19-16 лимита */
71  uint8_t AVL:1; /* Зарезервирован */
72  uint8_t allways_zero:2; /* Всегда нулевые */
73  uint8_t gran:1; /* Бит гранулярности */
74  uint8_t base_31_24; /* Биты 31-24 базы */
75 }__attribute__((packed));
76 
77 typedef struct tss_descriptor tss_descriptor_t;
78 
80 {
81  uint16_t base_low;
82  uint16_t selector;
83  uint8_t allways0;
84  uint8_t flags;
85  uint16_t base_high;
86 }__attribute__((packed));
87 
88 typedef struct idt_entry_struct idt_entry_t;
89 
91 {
92  uint16_t limit;
93  uint32_t base;
94 }__attribute__((packed));
95 
96 typedef struct idt_ptr_struct idt_ptr_t;
97 
98 /* External function for interrupt processing */
99 extern void isr0(void);
100 extern void isr1(void);
101 extern void isr2(void);
102 extern void isr3(void);
103 extern void isr4(void);
104 extern void isr5(void);
105 extern void isr6(void);
106 extern void isr7(void);
107 
108 extern void isr8(void);
109 extern void isr9(void);
110 extern void isr10(void);
111 extern void isr11(void);
112 extern void isr12(void);
113 extern void isr13(void);
114 extern void isr14(void);
115 extern void isr15(void);
116 
117 extern void isr16(void);
118 extern void isr17(void);
119 extern void isr18(void);
120 extern void isr19(void);
121 extern void isr20(void);
122 extern void isr21(void);
123 extern void isr22(void);
124 extern void isr23(void);
125 
126 extern void isr24(void);
127 extern void isr25(void);
128 extern void isr26(void);
129 extern void isr27(void);
130 extern void isr28(void);
131 extern void isr29(void);
132 extern void isr30(void);
133 extern void isr31(void);
134 
135 extern void irq0(void);
136 extern void irq1(void);
137 extern void irq2(void);
138 extern void irq3(void);
139 extern void irq4(void);
140 extern void irq5(void);
141 extern void irq6(void);
142 extern void irq7(void);
143 extern void irq8(void);
144 extern void irq9(void);
145 extern void irq10(void);
146 extern void irq11(void);
147 extern void irq12(void);
148 extern void irq13(void);
149 extern void irq14(void);
150 extern void irq15(void);
151 
152 extern void isr80(void);
153 
154 #endif
Основные определения ядра
struct registers __attribute__((packed))
Структура данных пакета от мыши
Definition: psf.h:19