nckernel  0.1
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
idt.h
Go to the documentation of this file.
1 
6 #define LOW16(base) ((base) & 0x0000FFFF)
7 #define HIGH16(base) ((base) >> 16)
8 
9 enum {
10  SIZE16 = 0,
11  SIZE32 = 1,
12 };
13 
14 enum {
15  TASK = 0x05,
16  INTERRUPT = 0x06,
17  TRAP = 0x07,
18 };
19 
20 enum {
21  IDT_MAX_ENTRY = 0x100,
23 
26 
27  IDT_USER = 3,
29 };
30 
34 struct task_gate {
35  unsigned long unused0:16;
36  unsigned long selector:16;
37  unsigned long unused1:8;
38  unsigned long reserved:5;
39  unsigned long dpl:2;
40  unsigned long p:1;
41  unsigned long unused2:16;
42 } __PACKED;
43 
48  unsigned long offset0:16;
49  unsigned long selector:16;
50  unsigned long unused:5;
51  unsigned long reserved0:3;
52  unsigned long type:3;
53  unsigned long d:1;
54  unsigned long reserved1:1;
55  unsigned long dpl:2;
56  unsigned long p:1;
57  unsigned long offset1:16;
58 } __PACKED;
59 
63 struct idtr {
64  unsigned short limit;
65  unsigned long base;
66 } __PACKED;
67 
71 struct ecode {
72  unsigned long ext:1;
73  unsigned long idt:1;
74  unsigned long ti:1;
75  unsigned long selector:29;
76 } __PACKED;
77 
81 extern void interrupt_init(void);
82