Changes in kernel/arch/ia32/src/interrupt.c [da1bafb:a000878c] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia32/src/interrupt.c
rda1bafb ra000878c 94 94 { 95 95 fault_if_from_uspace(istate, "Unserviced interrupt: %d.", n); 96 96 97 97 decode_istate(istate); 98 98 panic("Unserviced interrupt: %d.", n); … … 102 102 { 103 103 fault_if_from_uspace(istate, "Divide error."); 104 104 105 105 decode_istate(istate); 106 106 panic("Divide error."); … … 111 111 { 112 112 if (TASK) { 113 irq_spinlock_lock(&TASK->lock, false); 114 size_t ver = TASK->arch.iomapver; 115 irq_spinlock_unlock(&TASK->lock, false); 113 size_t ver; 116 114 115 spinlock_lock(&TASK->lock); 116 ver = TASK->arch.iomapver; 117 spinlock_unlock(&TASK->lock); 118 117 119 if (CPU->arch.iomapver_copy != ver) { 118 120 /* … … 128 130 fault_if_from_uspace(istate, "General protection fault."); 129 131 } 130 132 131 133 decode_istate(istate); 132 134 panic("General protection fault."); … … 136 138 { 137 139 fault_if_from_uspace(istate, "Stack fault."); 138 140 139 141 decode_istate(istate); 140 142 panic("Stack fault."); … … 144 146 { 145 147 uint32_t mxcsr; 146 asm volatile(148 asm ( 147 149 "stmxcsr %[mxcsr]\n" 148 150 : [mxcsr] "=m" (mxcsr) 149 151 ); 150 151 152 fault_if_from_uspace(istate, "SIMD FP exception(19), MXCSR: %#zx.", 152 153 (unative_t) mxcsr); … … 157 158 } 158 159 159 static void nm_fault(int n __attribute__((unused)), 160 istate_t *istate __attribute__((unused))) 161 { 162 #ifdef CONFIG_FPU_LAZY 160 static void nm_fault(int n __attribute__((unused)), istate_t *istate __attribute__((unused))) 161 { 162 #ifdef CONFIG_FPU_LAZY 163 163 scheduler_fpu_lazy_request(); 164 164 #else … … 169 169 170 170 #ifdef CONFIG_SMP 171 static void tlb_shootdown_ipi(int n __attribute__((unused)), 172 istate_t *istate __attribute__((unused))) 171 static void tlb_shootdown_ipi(int n __attribute__((unused)), istate_t *istate __attribute__((unused))) 173 172 { 174 173 trap_virtual_eoi(); … … 192 191 * The IRQ handler was found. 193 192 */ 194 193 195 194 if (irq->preack) { 196 195 /* Send EOI before processing the interrupt */ … … 199 198 } 200 199 irq->handler(irq); 201 irq_spinlock_unlock(&irq->lock, false);200 spinlock_unlock(&irq->lock); 202 201 } else { 203 202 /*
Note:
See TracChangeset
for help on using the changeset viewer.