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
kernel
include
sys
descriptor_tables.h
Документация по SayoriOS. Последние изменения: Вс 8 Дек 2024 11:15:21. Создано системой
1.9.1