Rev 4337 | Rev 4343 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 4337 | Rev 4339 | ||
|---|---|---|---|
| Line 86... | Line 86... | ||
| 86 | printf("PC: %#x(%s) RA: %#x(%s), SP(%p)\n", istate->epc, pcsymbol, istate->ra, rasymbol, istate->sp); |
86 | printf("PC: %#x(%s) RA: %#x(%s), SP(%p)\n", istate->epc, pcsymbol, istate->ra, rasymbol, istate->sp); |
| 87 | } |
87 | } |
| 88 | 88 | ||
| 89 | static void unhandled_exception(int n, istate_t *istate) |
89 | static void unhandled_exception(int n, istate_t *istate) |
| 90 | { |
90 | { |
| 91 | fault_if_from_uspace(istate, "unhandled exception %s", exctable[n]); |
91 | fault_if_from_uspace(istate, "Unhandled exception %s.", exctable[n]); |
| 92 | 92 | ||
| 93 | print_regdump(istate); |
93 | print_regdump(istate); |
| 94 | panic("unhandled exception %s\n", exctable[n]); |
94 | panic("Unhandled exception %s.", exctable[n]); |
| 95 | } |
95 | } |
| 96 | 96 | ||
| 97 | static void reserved_instr_exception(int n, istate_t *istate) |
97 | static void reserved_instr_exception(int n, istate_t *istate) |
| 98 | { |
98 | { |
| 99 | if (*((uint32_t *)istate->epc) == 0x7c03e83b) { |
99 | if (*((uint32_t *)istate->epc) == 0x7c03e83b) { |
| Line 130... | Line 130... | ||
| 130 | static void cpuns_exception(int n, istate_t *istate) |
130 | static void cpuns_exception(int n, istate_t *istate) |
| 131 | { |
131 | { |
| 132 | if (cp0_cause_coperr(cp0_cause_read()) == fpu_cop_id) |
132 | if (cp0_cause_coperr(cp0_cause_read()) == fpu_cop_id) |
| 133 | scheduler_fpu_lazy_request(); |
133 | scheduler_fpu_lazy_request(); |
| 134 | else { |
134 | else { |
| 135 | fault_if_from_uspace(istate, "unhandled Coprocessor Unusable Exception"); |
135 | fault_if_from_uspace(istate, "Unhandled Coprocessor Unusable Exception."); |
| 136 | panic("unhandled Coprocessor Unusable Exception\n"); |
136 | panic("Unhandled Coprocessor Unusable Exception."); |
| 137 | } |
137 | } |
| 138 | } |
138 | } |
| 139 | #endif |
139 | #endif |
| 140 | 140 | ||
| 141 | static void interrupt_exception(int n, istate_t *istate) |
141 | static void interrupt_exception(int n, istate_t *istate) |
| Line 168... | Line 168... | ||
| 168 | } |
168 | } |
| 169 | 169 | ||
| 170 | /** Handle syscall userspace call */ |
170 | /** Handle syscall userspace call */ |
| 171 | static void syscall_exception(int n, istate_t *istate) |
171 | static void syscall_exception(int n, istate_t *istate) |
| 172 | { |
172 | { |
| 173 | panic("Syscall is handled through shortcut"); |
173 | panic("Syscall is handled through shortcut."); |
| 174 | } |
174 | } |
| 175 | 175 | ||
| 176 | void exception_init(void) |
176 | void exception_init(void) |
| 177 | { |
177 | { |
| 178 | int i; |
178 | int i; |