Changeset de57e060 in mainline for kernel/arch/ia64/src/interrupt.c
- Timestamp:
- 2006-10-18T20:51:15Z (18 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 80ca47e
- Parents:
- cd13c2a
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia64/src/interrupt.c
rcd13c2a rde57e060 35 35 36 36 #include <arch/interrupt.h> 37 #include <interrupt.h> 38 #include <ddi/irq.h> 37 39 #include <panic.h> 38 40 #include <print.h> 41 #include <symtab.h> 42 #include <debug.h> 39 43 #include <console/console.h> 40 44 #include <arch/types.h> … … 42 46 #include <arch/barrier.h> 43 47 #include <arch/register.h> 44 #include <arch/drivers/it.h>45 48 #include <arch.h> 46 #include <symtab.h>47 #include <debug.h>48 49 #include <syscall/syscall.h> 49 50 #include <print.h> … … 52 53 #include <ipc/irq.h> 53 54 #include <ipc/ipc.h> 54 #include <interrupt.h> 55 55 #include <synch/spinlock.h> 56 56 57 57 #define VECTORS_64_BUNDLE 20 … … 61 61 62 62 #define BUNDLE_SIZE 16 63 64 63 65 64 char *vector_names_64_bundle[VECTORS_64_BUNDLE] = { … … 198 197 } 199 198 200 201 199 void nop_handler(uint64_t vector, istate_t *istate) 202 200 { 203 201 } 204 205 202 206 203 /** Handle syscall. */ … … 229 226 void external_interrupt(uint64_t vector, istate_t *istate) 230 227 { 228 irq_t *irq; 231 229 cr_ivr_t ivr; 232 230 … … 234 232 srlz_d(); 235 233 236 switch(ivr.vector) { 237 case INTERRUPT_TIMER: 238 it_interrupt(); 239 break; 240 case INTERRUPT_SPURIOUS: 241 printf("cpu%d: spurious interrupt\n", CPU->id); 242 break; 243 default: 244 panic("\nUnhandled External Interrupt Vector %d\n", ivr.vector); 245 break; 234 irq = irq_dispatch_and_lock(ivr.vector); 235 if (irq) { 236 irq->handler(irq, irq->arg); 237 spinlock_unlock(&irq->lock); 238 } else { 239 switch (ivr.vector) { 240 case INTERRUPT_SPURIOUS: 241 #ifdef CONFIG_DEBUG 242 printf("cpu%d: spurious interrupt\n", CPU->id); 243 #endif 244 break; 245 246 default: 247 panic("\nUnhandled External Interrupt Vector %d\n", ivr.vector); 248 break; 249 } 246 250 } 247 251 } 248 252 249 void virtual_interrupt(uint64_t irq, void *param)250 {251 switch(irq) {252 case IRQ_KBD:253 if (kbd_uspace)254 ipc_irq_send_notif(irq);255 break;256 default:257 panic("\nUnhandled Virtual Interrupt request %d\n", irq);258 break;259 }260 }261 262 253 /** @} 263 254 */
Note:
See TracChangeset
for help on using the changeset viewer.