Rev 623 | Rev 673 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 623 | Rev 664 | ||
---|---|---|---|
Line 72... | Line 72... | ||
72 | */ |
72 | */ |
73 | void exc_dispatch(int n, void *stack) |
73 | void exc_dispatch(int n, void *stack) |
74 | { |
74 | { |
75 | ASSERT(n < IVT_ITEMS); |
75 | ASSERT(n < IVT_ITEMS); |
76 | 76 | ||
77 | exc_table[n].f(n, stack); |
77 | exc_table[n].f(n + IVT_FIRST, stack); |
78 | } |
78 | } |
79 | 79 | ||
80 | /** Default 'null' exception handler */ |
80 | /** Default 'null' exception handler */ |
81 | static void exc_undef(int n, void *stack) |
81 | static void exc_undef(int n, void *stack) |
82 | { |
82 | { |
83 | panic("Unhandled exception %d.", n); |
83 | panic("Unhandled exception %d.", n); |
84 | } |
84 | } |
85 | 85 | ||
86 | /** KConsole cmd - print all exceptions */ |
86 | /** kconsole cmd - print all exceptions */ |
87 | static int exc_print_cmd(cmd_arg_t *argv) |
87 | static int exc_print_cmd(cmd_arg_t *argv) |
88 | { |
88 | { |
89 | int i; |
89 | int i; |
90 | char *symbol; |
90 | char *symbol; |
91 | 91 | ||
Line 93... | Line 93... | ||
93 | printf("Exc Description Handler\n"); |
93 | printf("Exc Description Handler\n"); |
94 | for (i=0; i < IVT_ITEMS; i++) { |
94 | for (i=0; i < IVT_ITEMS; i++) { |
95 | symbol = get_symtab_entry((__native)exc_table[i].f); |
95 | symbol = get_symtab_entry((__native)exc_table[i].f); |
96 | if (!symbol) |
96 | if (!symbol) |
97 | symbol = "not found"; |
97 | symbol = "not found"; |
98 | printf("%d %s 0x%p(%s)\n",i,exc_table[i].name, |
98 | printf("%d %s 0x%p(%s)\n", i + IVT_FIRST, exc_table[i].name, |
99 | exc_table[i].f,symbol); |
99 | exc_table[i].f,symbol); |
100 | if (!((i+1) % 20)) { |
100 | if (!((i+1) % 20)) { |
101 | printf("Press any key to continue."); |
101 | printf("Press any key to continue."); |
102 | spinlock_unlock(&exctbl_lock); |
102 | spinlock_unlock(&exctbl_lock); |
103 | getc(stdin); |
103 | getc(stdin); |