Changes in kernel/arch/ia32/src/interrupt.c [2a103b5:fd67c9f] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia32/src/interrupt.c
r2a103b5 rfd67c9f 40 40 #include <panic.h> 41 41 #include <genarch/drivers/i8259/i8259.h> 42 #include <genarch/pic/pic_ops.h>43 42 #include <halt.h> 44 43 #include <cpu.h> … … 62 61 */ 63 62 64 pic_ops_t *pic_ops = NULL; 63 void (*disable_irqs_function)(uint16_t irqmask) = NULL; 64 void (*enable_irqs_function)(uint16_t irqmask) = NULL; 65 void (*eoi_function)(unsigned int) = NULL; 66 const char *irqs_info = NULL; 65 67 66 68 void istate_decode(istate_t *istate) … … 86 88 istate_from_uspace(istate) ? istate->esp : 87 89 (uint32_t) &istate->esp); 90 } 91 92 static void trap_virtual_eoi(unsigned int inum) 93 { 94 if (eoi_function) 95 eoi_function(inum); 96 else 97 panic("No eoi_function."); 98 88 99 } 89 100 … … 168 179 istate_t *istate __attribute__((unused))) 169 180 { 170 pic_ops->eoi(0);181 trap_virtual_eoi(0); 171 182 tlb_shootdown_ipi_recv(); 172 183 } … … 191 202 if (irq->preack) { 192 203 /* Send EOI before processing the interrupt */ 193 pic_ops->eoi(inum);204 trap_virtual_eoi(inum); 194 205 ack = true; 195 206 } … … 204 215 205 216 if (!ack) 206 pic_ops->eoi(inum);217 trap_virtual_eoi(inum); 207 218 } 208 219 … … 210 221 { 211 222 unsigned int inum = n - IVT_IRQBASE; 212 if (!pic_ ops->is_spurious(inum)) {223 if (!pic_is_spurious(inum)) { 213 224 /* This is actually not a spurious IRQ, so proceed as usual. */ 214 225 irq_interrupt(n, istate); 215 226 return; 216 227 } 217 pic_ ops->handle_spurious(n);228 pic_handle_spurious(n); 218 229 #ifdef CONFIG_DEBUG 219 230 log(LF_ARCH, LVL_DEBUG, "cpu%u: PIC spurious interrupt %u", CPU->id, … … 253 264 } 254 265 266 void trap_virtual_enable_irqs(uint16_t irqmask) 267 { 268 if (enable_irqs_function) 269 enable_irqs_function(irqmask); 270 else 271 panic("No enable_irqs_function."); 272 } 273 274 void trap_virtual_disable_irqs(uint16_t irqmask) 275 { 276 if (disable_irqs_function) 277 disable_irqs_function(irqmask); 278 else 279 panic("No disable_irqs_function."); 280 } 281 255 282 /** @} 256 283 */
Note:
See TracChangeset
for help on using the changeset viewer.