SayoriOS 0.3.3

descriptor_tables.h
1 #ifndef DESCRIPTOR_TABLES_H
2 #define DESCRIPTOR_TABLES_H
3
4 #include "common.h"
5
6 struct gdt_entry_struct
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
19 struct gdt_ptr_struct
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
61 struct tss_descriptor
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
79 struct idt_entry_struct
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
90 struct idt_ptr_struct
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
common.h
Основные определения ядра
__attribute__
struct registers __attribute__((packed))
Структура данных пакета от мыши
Definition: psf.h:19
gdt_entry_struct
Definition: descriptor_tables.h:7
gdt_ptr_struct
Definition: descriptor_tables.h:20
idt_entry_struct
Definition: descriptor_tables.h:80
idt_ptr_struct
Definition: descriptor_tables.h:91
tss_descriptor
Definition: descriptor_tables.h:62
tss_entry
Definition: descriptor_tables.h:28