From cd6bec6cef6865086910ee0abc0c1be0cceb511c Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Fri, 1 Mar 2002 16:22:59 +0000 Subject: 2002-02-27 Greg Menke * shared/gdbstub/README: Added text. * shared/gdbstub/mips-stub.c: Modified isr install routine to capture all exceptions. --- c/src/lib/libbsp/mips/shared/gdbstub/ChangeLog | 6 ++ c/src/lib/libbsp/mips/shared/gdbstub/mips-stub.c | 72 ++++++++++++++++-------- 2 files changed, 55 insertions(+), 23 deletions(-) (limited to 'c/src/lib/libbsp') diff --git a/c/src/lib/libbsp/mips/shared/gdbstub/ChangeLog b/c/src/lib/libbsp/mips/shared/gdbstub/ChangeLog index fde13c2d50..db4505a19c 100644 --- a/c/src/lib/libbsp/mips/shared/gdbstub/ChangeLog +++ b/c/src/lib/libbsp/mips/shared/gdbstub/ChangeLog @@ -1,3 +1,9 @@ +2002-02-27 Greg Menke + + * shared/gdbstub/README: Added text. + * shared/gdbstub/mips-stub.c: Modified isr install routine to + capture all exceptions. + 2001-02-27 Joel Sherrill * Significant modifications including adding thread support, the 'X' diff --git a/c/src/lib/libbsp/mips/shared/gdbstub/mips-stub.c b/c/src/lib/libbsp/mips/shared/gdbstub/mips-stub.c index 494af262ac..16ff82f70b 100644 --- a/c/src/lib/libbsp/mips/shared/gdbstub/mips-stub.c +++ b/c/src/lib/libbsp/mips/shared/gdbstub/mips-stub.c @@ -1309,29 +1309,55 @@ static char initialized; /* 0 means we are not initialized */ void mips_gdb_stub_install(void) { - rtems_isr_entry old; - int i; - - if (initialized) { - ASSERT(0); - return; - } - - /* z0breaks */ - for (i=0; i<(sizeof(z0break_arr)/sizeof(z0break_arr[0]))-1; i++) { - z0break_arr[i].next = &z0break_arr[i+1]; - } - - z0break_arr[i].next = NULL; - z0break_avail = &z0break_arr[0]; - z0break_list = NULL; - + /* + These are the RTEMS-defined vectors for all the MIPS exceptions + */ + int exceptionVector[]= { MIPS_EXCEPTION_MOD, \ + MIPS_EXCEPTION_TLBL, \ + MIPS_EXCEPTION_TLBS, \ + MIPS_EXCEPTION_ADEL, \ + MIPS_EXCEPTION_ADES, \ + MIPS_EXCEPTION_IBE, \ + MIPS_EXCEPTION_DBE, \ + MIPS_EXCEPTION_SYSCALL, \ + MIPS_EXCEPTION_BREAK, \ + MIPS_EXCEPTION_RI, \ + MIPS_EXCEPTION_CPU, \ + MIPS_EXCEPTION_OVERFLOW, \ + MIPS_EXCEPTION_TRAP, \ + MIPS_EXCEPTION_VCEI, \ + MIPS_EXCEPTION_FPE, \ + MIPS_EXCEPTION_C2E, \ + MIPS_EXCEPTION_WATCH, \ + MIPS_EXCEPTION_VCED, \ + -1 }; + int i; + rtems_isr_entry old; + + if (initialized) { + ASSERT(0); + return; + } + + /* z0breaks */ + for (i=0; i<(sizeof(z0break_arr)/sizeof(z0break_arr[0]))-1; i++) { + z0break_arr[i].next = &z0break_arr[i+1]; + } + + z0break_arr[i].next = NULL; + z0break_avail = &z0break_arr[0]; + z0break_list = NULL; + + + for(i=0; exceptionVector[i] > -1; i++) + { + rtems_interrupt_catch( (rtems_isr_entry) handle_exception, exceptionVector[i], &old ); + } + + initialized = 1; + /* get the attention of gdb */ + mips_break(1); +} - rtems_interrupt_catch( (rtems_isr_entry) handle_exception, MIPS_EXCEPTION_SYSCALL, &old ); - /* rtems_interrupt_catch( handle_exception, MIPS_EXCEPTION_BREAK, &old ); */ - initialized = 1; - /* get the attention of gdb */ - mips_break(1); -} -- cgit v1.2.3