Changeset da1bafb in mainline for kernel/arch/ia32/src/interrupt.c
- Timestamp:
- 2010-05-24T18:57:31Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 0095368
- Parents:
- 666f492
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia32/src/interrupt.c
r666f492 rda1bafb 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 size_t ver; 113 irq_spinlock_lock(&TASK->lock, false); 114 size_t ver = TASK->arch.iomapver; 115 irq_spinlock_unlock(&TASK->lock, false); 114 116 115 spinlock_lock(&TASK->lock);116 ver = TASK->arch.iomapver;117 spinlock_unlock(&TASK->lock);118 119 117 if (CPU->arch.iomapver_copy != ver) { 120 118 /* … … 130 128 fault_if_from_uspace(istate, "General protection fault."); 131 129 } 132 130 133 131 decode_istate(istate); 134 132 panic("General protection fault."); … … 138 136 { 139 137 fault_if_from_uspace(istate, "Stack fault."); 140 138 141 139 decode_istate(istate); 142 140 panic("Stack fault."); … … 146 144 { 147 145 uint32_t mxcsr; 148 asm (146 asm volatile ( 149 147 "stmxcsr %[mxcsr]\n" 150 148 : [mxcsr] "=m" (mxcsr) 151 149 ); 150 152 151 fault_if_from_uspace(istate, "SIMD FP exception(19), MXCSR: %#zx.", 153 152 (unative_t) mxcsr); … … 158 157 } 159 158 160 static void nm_fault(int n __attribute__((unused)), istate_t *istate __attribute__((unused))) 161 { 162 #ifdef CONFIG_FPU_LAZY 159 static void nm_fault(int n __attribute__((unused)), 160 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)), istate_t *istate __attribute__((unused))) 171 static void tlb_shootdown_ipi(int n __attribute__((unused)), 172 istate_t *istate __attribute__((unused))) 172 173 { 173 174 trap_virtual_eoi(); … … 191 192 * The IRQ handler was found. 192 193 */ 193 194 194 195 if (irq->preack) { 195 196 /* Send EOI before processing the interrupt */ … … 198 199 } 199 200 irq->handler(irq); 200 spinlock_unlock(&irq->lock);201 irq_spinlock_unlock(&irq->lock, false); 201 202 } else { 202 203 /*
Note:
See TracChangeset
for help on using the changeset viewer.