Go to the documentation of this file.
10 #define INSTALL_ISR(idt, t, ptr) do { \
11 (idt).p = IDT_SEGMENT_PRESENT; \
12 (idt).dpl = IDT_KERNEL; \
15 (idt).selector = ((DESC_KERNEL_CS << SIZEOF_A_DESC_BIT) | TI(GDT) | KERNEL); \
16 (idt).offset0 = LOW16((unsigned long)ptr); \
17 (idt).offset1 = HIGH16((unsigned long)ptr); \
20 #define INSTALL_USER_ISR(idt, t, ptr) do { \
21 (idt).p = IDT_SEGMENT_PRESENT; \
22 (idt).dpl = IDT_USER; \
25 (idt).selector = ((DESC_KERNEL_CS << SIZEOF_A_DESC_BIT) | TI(GDT) | KERNEL); \
26 (idt).offset0 = LOW16((unsigned long)ptr); \
27 (idt).offset1 = HIGH16((unsigned long)ptr); \
135 idtr.
base = (
unsigned long)s_idt;
137 asm volatile(
"lidt (%0)"::
"g"(&idtr));