From ffdc6591eeb8639f57dc5ab1c9fc5b25c2b8f950 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Fri, 8 Mar 2002 16:26:03 +0000 Subject: 2002-03-05 Greg Menke * startup/gdb-support.c: Added calls into the mips-support gdb stub for configuring the memory regions. Any bsp that wants to use the gdbstub will need to do something similar. * startup/Makefile.am: Added shared/gdbstub directory to include path. --- c/src/lib/libbsp/mips/genmongoosev/ChangeLog | 7 +++ .../libbsp/mips/genmongoosev/startup/Makefile.am | 2 + .../libbsp/mips/genmongoosev/startup/gdb-support.c | 50 +++++++++++++++++++--- 3 files changed, 53 insertions(+), 6 deletions(-) (limited to 'c') diff --git a/c/src/lib/libbsp/mips/genmongoosev/ChangeLog b/c/src/lib/libbsp/mips/genmongoosev/ChangeLog index a065277c95..6bc1a2397d 100644 --- a/c/src/lib/libbsp/mips/genmongoosev/ChangeLog +++ b/c/src/lib/libbsp/mips/genmongoosev/ChangeLog @@ -1,3 +1,10 @@ +2002-03-05 Greg Menke + + * startup/gdb-support.c: Added calls into the mips-support gdb stub + for configuring the memory regions. Any bsp that wants to use the + gdbstub will need to do something similar. + * startup/Makefile.am: Added shared/gdbstub directory to include path. + 2002-02-27 Greg Menke * start/start.S: Added kseg1 test to enable cache flush code diff --git a/c/src/lib/libbsp/mips/genmongoosev/startup/Makefile.am b/c/src/lib/libbsp/mips/genmongoosev/startup/Makefile.am index f0ff499f67..0fb52c2f8a 100644 --- a/c/src/lib/libbsp/mips/genmongoosev/startup/Makefile.am +++ b/c/src/lib/libbsp/mips/genmongoosev/startup/Makefile.am @@ -22,6 +22,8 @@ include $(top_srcdir)/../../../../../../automake/lib.am # (OPTIONAL) Add local stuff here using += # +AM_CPPFLAGS += -I @srcdir@/../../shared/gdbstub + $(PGM): $(OBJS) $(make-rel) diff --git a/c/src/lib/libbsp/mips/genmongoosev/startup/gdb-support.c b/c/src/lib/libbsp/mips/genmongoosev/startup/gdb-support.c index 5aebbb936a..fed5437137 100644 --- a/c/src/lib/libbsp/mips/genmongoosev/startup/gdb-support.c +++ b/c/src/lib/libbsp/mips/genmongoosev/startup/gdb-support.c @@ -14,6 +14,7 @@ #include #include #include +#include "gdb_if.h" #include @@ -36,10 +37,9 @@ extern void mg5uart_write_polled(int minor, char c ); extern int mg5uart_inbyte_nonblocking_polled(int minor); -extern void mips_gdb_stub_install(void); +static int debugUartEnabled = 0; -static int debugUartEnabled = 0; @@ -61,24 +61,36 @@ int mg5rdbgOpenGDBuart(int breakoninit) printf("gdbstub: Failed to configure UART 2 for 19200N82\n"); return -1; } + printf("gdbstub: UART 2 configured for 19200N82\n"); debugUartEnabled = -1; /* set up vectoring for gdb */ - mips_gdb_stub_install(); + mips_gdb_stub_install(-1); + + /* + this is a rough approximation of our memory map. Yours is + probably different. It only needs to be sufficient for the stub + to know what it can and can't do and where. + */ + gdbstub_add_memsegment(0 , 0x8001ffff, MEMOPT_READABLE ); + gdbstub_add_memsegment(0x80020000, 0x80afffff, MEMOPT_READABLE | MEMOPT_WRITEABLE ); + gdbstub_add_memsegment(0x80b00000, 0x814fffff, MEMOPT_READABLE ); + gdbstub_add_memsegment(0x81500000, 0x81ffffff, MEMOPT_READABLE | MEMOPT_WRITEABLE ); - printf("gdbstub: Remote GDB stub listening on UART 2 at 19200N82\n"); if( breakoninit ) { + printf("gdbstub: GDB stub entered, connect host debugger now\n"); /* break to gdb. We'll wait there for the operator to get their gdb going, then they can 'continue' or do whatever. */ mips_break(0); + printf("gdbstub: User code running\n"); } - - printf("gdbstub: User code running\n"); + else + printf("gdbstub: GDB stub ready for exceptions\n"); return RTEMS_SUCCESSFUL; } @@ -113,3 +125,29 @@ void putDebugChar (char c) return mg5uart_write_polled(1,c); } + + + +/* + { + * initialize hardware pc and data breakpoints to quiet state* + unsigned32 dcic, reg, mask; + + reg = 0xffffffff; + mask = 0xffffffff; + + mips_set_bpcrm( reg, mask ); + mips_set_bdarm( reg, mask ); + + mips_get_dcic( dcic ); + * configure dcic for trapping, user & kernel mode, PC traps and enable it * + dcic = DCIC_TR | DCIC_UD | DCIC_KD | DCIC_PCE | DCIC_DE; + * dcic = DCIC_UD | DCIC_KD | DCIC_PCE | DCIC_DE; * + mips_set_dcic( dcic ); + + mips_get_bpcrm( reg, mask ); + mips_get_dcic( dcic ); + * printf("bpc is %08X, bpc_mask is %08X, dcic is now %08X\n", reg, mask, dcic ); * + } +*/ + -- cgit v1.2.3