Changeset 7a8c866a in mainline for arch/mips32/src/interrupt.c
- Timestamp:
- 2005-12-10T17:51:36Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 2312685
- Parents:
- e5fcf00
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/mips32/src/interrupt.c
re5fcf00 r7a8c866a 33 33 #include <arch/cp0.h> 34 34 #include <time/clock.h> 35 #include <panic.h>36 #include <print.h>37 #include <symtab.h>38 35 #include <arch/drivers/arc.h> 39 40 static void print_regdump(struct exception_regdump *pstate)41 {42 char *pcsymbol = "";43 char *rasymbol = "";44 45 char *s = get_symtab_entry(pstate->epc);46 if (s)47 pcsymbol = s;48 s = get_symtab_entry(pstate->ra);49 if (s)50 rasymbol = s;51 52 printf("PC: %X(%s) RA: %X(%s)\n",pstate->epc,pcsymbol,53 pstate->ra,rasymbol);54 }55 36 56 37 /** Disable interrupts. … … 94 75 } 95 76 96 static void unhandled_exception(int n, void *stack)97 {98 struct exception_regdump *pstate = (struct exception_regdump *)stack;99 100 print_regdump(pstate);101 panic("unhandled interrupt %d\n", n);102 }103 104 77 static void timer_exception(int n, void *stack) 105 78 { … … 118 91 } 119 92 120 /** Basic exception handler */121 void interrupt(struct exception_regdump *pstate)122 {123 __u32 cause;124 int i;125 126 /* decode interrupt number and process the interrupt */127 cause = (cp0_cause_read() >> 8) &0xff;128 129 for (i = 0; i < 8; i++)130 if (cause & (1 << i))131 exc_dispatch(i, (void *)pstate);132 }133 134 93 /* Initialize basic tables for exception dispatching */ 135 94 void interrupt_init(void) … … 137 96 int i; 138 97 139 for (i=0;i < IVT_ITEMS; i++) 140 exc_register(i, "undef", unhandled_exception); 141 142 exc_register(TIMER_IRQ, "timer", timer_exception); 143 exc_register(0, "swint0", swint0); 144 exc_register(1, "swint1", swint1); 98 int_register(TIMER_IRQ, "timer", timer_exception); 99 int_register(0, "swint0", swint0); 100 int_register(1, "swint1", swint1); 145 101 }
Note:
See TracChangeset
for help on using the changeset viewer.