NetcanOS
Netcan OS is an operation system for x86 PCs, for learning how os works.
descriptor_tables.h
浏览该文件的文档.
1 /*************************************************************************
2  > File Name: kernel/descriptor_tables.h
3  > Author: Netcan
4  > Blog: http://www.netcan666.com
5  > Mail: 1469709759@qq.com
6  > Created Time: 2018-07-09 Mon 15:30:46 CST
7  ************************************************************************/
8 
9 #include <io.h>
10 #ifndef DT_H
11 #define DT_H
12 #define PIC_MASTER_CONTROL 0x20
13 #define PIC_MASTER_DATA 0x21
14 #define PIC_SLAVE_CONTROL 0xa0
15 #define PIC_SLAVE_DATA 0xa1
16 #define PIC_EOI 0x20
17 
18 
30 } __attribute__((packed));
32 
38 } __attribute__((packed));
39 typedef struct gdt_ptr_struct gdt_ptr_t;
40 
45  u16 sel;
49 } __attribute__((packed));
51 
57 } __attribute__((packed));
58 typedef struct idt_ptr_struct idt_ptr_t;
59 
61 
64 extern void isr0();
65 extern void isr1();
66 extern void isr2();
67 extern void isr3();
68 extern void isr4();
69 extern void isr5();
70 extern void isr6();
71 extern void isr7();
72 extern void isr8();
73 extern void isr9();
74 extern void isr10();
75 extern void isr11();
76 extern void isr12();
77 extern void isr13();
78 extern void isr14();
79 extern void isr15();
80 extern void isr16();
81 extern void isr17();
82 extern void isr18();
83 extern void isr19();
84 extern void isr20();
85 extern void isr21();
86 extern void isr22();
87 extern void isr23();
88 extern void isr24();
89 extern void isr25();
90 extern void isr26();
91 extern void isr27();
92 extern void isr28();
93 extern void isr29();
94 extern void isr30();
95 extern void isr31();
96 
99 extern void irq0();
100 extern void irq1();
101 extern void irq2();
102 extern void irq3();
103 extern void irq4();
104 extern void irq5();
105 extern void irq6();
106 extern void irq7();
107 extern void irq8();
108 extern void irq9();
109 extern void irq10();
110 extern void irq11();
111 extern void irq12();
112 extern void irq13();
113 extern void irq14();
114 extern void irq15();
115 
116 
117 #endif
void irq11()
u16 limit_low
segment limit(0:15)
Definition: descriptor_tables.h:24
void isr22()
void irq7()
void isr2()
void isr26()
void irq0()
32-47号中断
u8 granularity
2nd flags和segment limit(16:19)
Definition: descriptor_tables.h:28
u16 limit
IDT表大小
Definition: descriptor_tables.h:55
u16 sel
内核段选择(0x08选中代码段)
Definition: descriptor_tables.h:45
u16 base_lo
中断服务程序向量地址的低16位
Definition: descriptor_tables.h:44
void isr19()
void isr11()
void irq13()
void isr7()
void isr16()
void isr27()
void irq5()
u32 base
IDT表地址
Definition: descriptor_tables.h:56
void isr24()
void isr10()
u16 base_hi
中断服务程序向量地址的高16位
Definition: descriptor_tables.h:48
void isr21()
void isr20()
unsigned short u16
Definition: io.h:16
unsigned char u8
Definition: io.h:18
u8 access
1st flags和type flags
Definition: descriptor_tables.h:27
void isr13()
void isr3()
void isr0()
CPU定义的32个system error中断程序
u8 base_high
base address(24:31)
Definition: descriptor_tables.h:29
void isr28()
void isr30()
u32 base
GDT表的地址
Definition: descriptor_tables.h:37
void isr15()
void irq2()
void irq3()
IDT表指针,告诉CPU IDT表的位置。
Definition: descriptor_tables.h:54
u8 base_middle
base address(16:23)
Definition: descriptor_tables.h:26
void isr29()
void isr4()
void isr17()
void irq10()
void irq9()
void isr31()
void irq15()
void irq1()
GDT指针,告诉CPU GDT表的位置。
Definition: descriptor_tables.h:35
void isr25()
void init_descriptor_tables()
初始化GDT表和IDT表。
Definition: descriptor_tables.c:40
u16 limit
GDT表的大小
Definition: descriptor_tables.h:36
void isr18()
void isr6()
void isr8()
u8 flags
Flags
Definition: descriptor_tables.h:47
void isr9()
void irq6()
void isr23()
u16 base_low
base address(0:15)
Definition: descriptor_tables.h:25
void irq8()
u8 always0
总是0
Definition: descriptor_tables.h:46
void isr5()
void isr12()
unsigned int u32
Definition: io.h:14
GDT表结构。 1st flags: (present) (privilege) (descriptor type) type flags: (code) (conforming) (reada...
Definition: descriptor_tables.h:23
void irq4()
void isr1()
struct gdt_entry_struct __attribute__((packed))
用packed让gcc不要对齐
IDT表结构
Definition: descriptor_tables.h:43
void irq14()
void isr14()
void irq12()