-
Notifications
You must be signed in to change notification settings - Fork 0
/
descriptor-tables.h
75 lines (66 loc) · 1.48 KB
/
descriptor-tables.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#ifndef _KERNEL_DESCRIPTORTABLES_H
#define _KERNEL_DESCRIPTORTABLES_H
#include <stdint.h>
#include <stddef.h>
struct gdt_entry_struct {
uint16_t limit_low;
uint16_t base_low;
uint8_t base_mid;
uint8_t access;
// uint8_t limit_high;
uint8_t flags;
uint8_t base_high;
} __attribute__((packed));
typedef struct gdt_entry_struct gdt_entry_t;
struct idt_entry_struct {
uint16_t base_low;
uint16_t selector;
uint8_t reserved;
uint8_t flags;
uint16_t base_high;
} __attribute__((packed));
typedef struct idt_entry_struct idt_entry_t;
struct gdt_ptr_struct {
uint16_t limit;
uint32_t base;
} __attribute__((packed));
typedef struct gdt_ptr_struct gdt_ptr_t;
struct idt_ptr_struct {
uint16_t limit;
uint32_t base;
} __attribute__((packed));
typedef struct idt_ptr_struct idt_ptr_t;
extern void isr0();
extern void isr1();
extern void isr2();
extern void isr3();
extern void isr4();
extern void isr5();
extern void isr6();
extern void isr7();
extern void isr8();
extern void isr9();
extern void isr10();
extern void isr11();
extern void isr12();
extern void isr13();
extern void isr14();
extern void isr15();
extern void isr16();
extern void isr17();
extern void isr18();
extern void isr19();
extern void isr20();
extern void isr21();
extern void isr22();
extern void isr23();
extern void isr24();
extern void isr25();
extern void isr26();
extern void isr27();
extern void isr28();
extern void isr29();
extern void isr30();
extern void isr31();
void descriptor_tables_init();
#endif