Rev 610 | Rev 615 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 610 | Rev 614 | ||
---|---|---|---|
Line 37... | Line 37... | ||
37 | #include <symtab.h> |
37 | #include <symtab.h> |
38 | #include <print.h> |
38 | #include <print.h> |
39 | #include <interrupt.h> |
39 | #include <interrupt.h> |
40 | #include <func.h> |
40 | #include <func.h> |
41 | #include <console/kconsole.h> |
41 | #include <console/kconsole.h> |
- | 42 | #include <arch/debugger.h> |
|
42 | 43 | ||
43 | static char * exctable[] = { |
44 | static char * exctable[] = { |
44 | "Interrupt","TLB Modified","TLB Invalid","TLB Invalid Store", |
45 | "Interrupt","TLB Modified","TLB Invalid","TLB Invalid Store", |
45 | "Address Error - load/instr. fetch", |
46 | "Address Error - load/instr. fetch", |
46 | "Address Error - store", |
47 | "Address Error - store", |
Line 85... | Line 86... | ||
85 | } |
86 | } |
86 | 87 | ||
87 | static void breakpoint_exception(int n, void *data) |
88 | static void breakpoint_exception(int n, void *data) |
88 | { |
89 | { |
89 | struct exception_regdump *pstate = (struct exception_regdump *)data; |
90 | struct exception_regdump *pstate = (struct exception_regdump *)data; |
90 | char *symbol = get_symtab_entry(pstate->epc); |
- | |
91 | - | ||
92 | #ifdef CONFIG_DEBUG |
- | |
93 | printf("***Breakpoint %p in %s.\n", pstate->epc, symbol); |
- | |
94 | printf("***Type 'exit' to exit kconsole.\n"); |
- | |
95 | /* Umm..we should rather set some 'debugstate' here */ |
- | |
96 | haltstate = 1; |
- | |
97 | kconsole("debug"); |
- | |
98 | haltstate = 0; |
- | |
99 | #endif |
- | |
100 | 91 | ||
- | 92 | #ifdef CONFIG_DEBUG |
|
- | 93 | debugger_bpoint(pstate); |
|
- | 94 | #else |
|
101 | /* it is necessary to not re-execute BREAK instruction after |
95 | /* it is necessary to not re-execute BREAK instruction after |
102 | returning from Exception handler |
96 | returning from Exception handler |
103 | (see page 138 in R4000 Manual for more information) */ |
97 | (see page 138 in R4000 Manual for more information) */ |
104 | pstate->epc += 4; |
98 | pstate->epc += 4; |
- | 99 | #endif |
|
105 | } |
100 | } |
106 | 101 | ||
107 | static void tlbmod_exception(int n, void *data) |
102 | static void tlbmod_exception(int n, void *data) |
108 | { |
103 | { |
109 | struct exception_regdump *pstate = (struct exception_regdump *)data; |
104 | struct exception_regdump *pstate = (struct exception_regdump *)data; |