Changes in kernel/arch/ia32/src/pm.c [149d14e5:f4946de] in mainline
- File:
-
- 1 edited
-
kernel/arch/ia32/src/pm.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia32/src/pm.c
r149d14e5 rf4946de 35 35 #include <arch/pm.h> 36 36 #include <config.h> 37 #include < arch/types.h>37 #include <typedefs.h> 38 38 #include <arch/interrupt.h> 39 39 #include <arch/asm.h> … … 130 130 d->selector = gdtselector(KTEXT_DES); 131 131 132 d->access = AR_PRESENT | AR_INTERRUPT; /* masking interrupt */133 134 132 if (i == VECTOR_SYSCALL) { 135 133 /* 136 * The syscall interrupt gate must be calleable from137 * userland. 134 * The syscall trap gate must be callable from 135 * userland. Interrupts will remain enabled. 138 136 */ 139 d->access |= DPL_USER; 137 d->access = AR_PRESENT | AR_TRAP | DPL_USER; 138 } else { 139 /* 140 * Other interrupts use interrupt gates which 141 * disable interrupts. 142 */ 143 d->access = AR_PRESENT | AR_INTERRUPT; 140 144 } 141 142 idt_setoffset(d, ((uintptr_t) interrupt_handlers) +143 i * interrupt_handler_size);144 145 } 145 } 146 146 147 d = &idt[0]; 148 idt_setoffset(d++, (uintptr_t) &int_0); 149 idt_setoffset(d++, (uintptr_t) &int_1); 150 idt_setoffset(d++, (uintptr_t) &int_2); 151 idt_setoffset(d++, (uintptr_t) &int_3); 152 idt_setoffset(d++, (uintptr_t) &int_4); 153 idt_setoffset(d++, (uintptr_t) &int_5); 154 idt_setoffset(d++, (uintptr_t) &int_6); 155 idt_setoffset(d++, (uintptr_t) &int_7); 156 idt_setoffset(d++, (uintptr_t) &int_8); 157 idt_setoffset(d++, (uintptr_t) &int_9); 158 idt_setoffset(d++, (uintptr_t) &int_10); 159 idt_setoffset(d++, (uintptr_t) &int_11); 160 idt_setoffset(d++, (uintptr_t) &int_12); 161 idt_setoffset(d++, (uintptr_t) &int_13); 162 idt_setoffset(d++, (uintptr_t) &int_14); 163 idt_setoffset(d++, (uintptr_t) &int_15); 164 idt_setoffset(d++, (uintptr_t) &int_16); 165 idt_setoffset(d++, (uintptr_t) &int_17); 166 idt_setoffset(d++, (uintptr_t) &int_18); 167 idt_setoffset(d++, (uintptr_t) &int_19); 168 idt_setoffset(d++, (uintptr_t) &int_20); 169 idt_setoffset(d++, (uintptr_t) &int_21); 170 idt_setoffset(d++, (uintptr_t) &int_22); 171 idt_setoffset(d++, (uintptr_t) &int_23); 172 idt_setoffset(d++, (uintptr_t) &int_24); 173 idt_setoffset(d++, (uintptr_t) &int_25); 174 idt_setoffset(d++, (uintptr_t) &int_26); 175 idt_setoffset(d++, (uintptr_t) &int_27); 176 idt_setoffset(d++, (uintptr_t) &int_28); 177 idt_setoffset(d++, (uintptr_t) &int_29); 178 idt_setoffset(d++, (uintptr_t) &int_30); 179 idt_setoffset(d++, (uintptr_t) &int_31); 180 idt_setoffset(d++, (uintptr_t) &int_32); 181 idt_setoffset(d++, (uintptr_t) &int_33); 182 idt_setoffset(d++, (uintptr_t) &int_34); 183 idt_setoffset(d++, (uintptr_t) &int_35); 184 idt_setoffset(d++, (uintptr_t) &int_36); 185 idt_setoffset(d++, (uintptr_t) &int_37); 186 idt_setoffset(d++, (uintptr_t) &int_38); 187 idt_setoffset(d++, (uintptr_t) &int_39); 188 idt_setoffset(d++, (uintptr_t) &int_40); 189 idt_setoffset(d++, (uintptr_t) &int_41); 190 idt_setoffset(d++, (uintptr_t) &int_42); 191 idt_setoffset(d++, (uintptr_t) &int_43); 192 idt_setoffset(d++, (uintptr_t) &int_44); 193 idt_setoffset(d++, (uintptr_t) &int_45); 194 idt_setoffset(d++, (uintptr_t) &int_46); 195 idt_setoffset(d++, (uintptr_t) &int_47); 196 idt_setoffset(d++, (uintptr_t) &int_48); 197 idt_setoffset(d++, (uintptr_t) &int_49); 198 idt_setoffset(d++, (uintptr_t) &int_50); 199 idt_setoffset(d++, (uintptr_t) &int_51); 200 idt_setoffset(d++, (uintptr_t) &int_52); 201 idt_setoffset(d++, (uintptr_t) &int_53); 202 idt_setoffset(d++, (uintptr_t) &int_54); 203 idt_setoffset(d++, (uintptr_t) &int_55); 204 idt_setoffset(d++, (uintptr_t) &int_56); 205 idt_setoffset(d++, (uintptr_t) &int_57); 206 idt_setoffset(d++, (uintptr_t) &int_58); 207 idt_setoffset(d++, (uintptr_t) &int_59); 208 idt_setoffset(d++, (uintptr_t) &int_60); 209 idt_setoffset(d++, (uintptr_t) &int_61); 210 idt_setoffset(d++, (uintptr_t) &int_62); 211 idt_setoffset(d++, (uintptr_t) &int_63); 212 213 idt_setoffset(&idt[VECTOR_SYSCALL], (uintptr_t) &int_syscall); 214 } 147 215 148 216 /* Clean IOPL(12,13) and NT(14) flags in EFLAGS register */
Note:
See TracChangeset
for help on using the changeset viewer.
