nckernel  0.1
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
isr.h
Go to the documentation of this file.
1 
6 enum irq_nr {
7  IRQ_NR_DIVIDE = 0x00,
8  IRQ_NR_DEBUG = 0x01,
9  IRQ_NR_NMI = 0x02,
12  IRQ_NR_BOUND = 0x05,
13  IRQ_NR_OPCODE = 0x06,
14  IRQ_NR_DEVICE = 0x07,
22  /* Reserved: 0x0F */
23  IRQ_NR_MATH = 0x10,
26  IRQ_NR_SIMD = 0x13,
27  /* Reserved: 0x14 ~ 0x1F */
28  IRQ_NR_TIMER = 0x20,
30  IRQ_NR_IRQ2 = 0x22,
33  /* Reserved: 0x25 */
34  IRQ_NR_FDC = 0x26,
35  /* Reserved: 0x27 */
36  IRQ_NR_RTC = 0x28,
37  IRQ_NR_BINDER = 0x29,
38  /* Reserved: 0x2A ~ 0x2D */
39  IRQ_NR_HDC = 0x2E,
40  /* Reserved: 0x2F ~ 0x30 */
41  IRQ_NR_SW = 0x31,
42  IRQ_MAX = 0x100,
43 };
44 
45 #define asmlinkage __attribute__((regparm(0)))
46 
47 struct intr_info {
48  int irq;
49  int argc;
50  unsigned long *argv;
51  int ret;
52 };
53 
57 union error_code {
58  unsigned long value;
59 
60  struct {
61  unsigned long ext:1;
62  unsigned long idt:1;
63  unsigned long ti:1;
64  unsigned long selector:29;
65  } __PACKED normal;
66 
67  struct {
73  unsigned long present: 1;
74  unsigned long write: 1;
75  unsigned long user: 1;
81  unsigned long reserved_write: 1;
82  unsigned long instr: 1;
83  unsigned long reserved: 27;
85 };
86 
87 struct pt_regs {
88  struct {
89  unsigned long edi;
90  unsigned long esi;
91  unsigned long ebp;
92  unsigned long esp;
93  unsigned long ebx;
94  unsigned long edx;
95  unsigned long ecx;
96  unsigned long eax;
97  } pushad;
100  unsigned short ds;
101  unsigned short reserved0;
102  unsigned short es;
103  unsigned short reserved1;
104  unsigned short fs;
105  unsigned short reserved2;
106  unsigned short gs;
107  unsigned short reserved3;
108 
109  unsigned long ebp;
110  unsigned long irq;
113  unsigned long eip;
114  unsigned long cs;
115  unsigned long eflags;
116 };
117 
121 struct pt_regs_user {
122  unsigned long esp;
123  unsigned long ss;
124 };
125 
133  unsigned long ret_addr;
134  unsigned long arg;
135 };
136 
137 extern asmlinkage struct pt_regs *do_irq(struct pt_regs *reg);
138