Subject: issues with KGDB and ARM
To: None <port-arm@netbsd.org>
From: Karl Janmar <karl@utopiafoundation.org>
List: port-arm
Date: 03/29/2005 01:13:05
Hi there ARM hackers!
I have put some work in my GP32 port (which I talked about erlier in
this list). I had some issues when I was using KGDB with netbsd/arm.
I use the 2.0 Release as my source base.
I needed to do some modification to generate a valid KGDB undefined
instruction when single stepping, if I don't do this the kernel will
generate an unhandled undefined exception.
This happen when sys/ddb/db_run.c: db_set_single_step() calling machdep
stuff in db_machdep.c inserting a BKPT_INST.
RCS file: /cvsroot/src/sys/arch/arm/include/db_machdep.h,v
retrieving revision 1.8
diff -u -r1.8 db_machdep.h
--- db_machdep.h 9 Jul 2003 20:14:15 -0000 1.8
+++ db_machdep.h 28 Mar 2005 22:53:01 -0000
@@ -58,7 +58,12 @@
#endif
#define BKPT_ADDR(addr) (addr) /* breakpoint
address */
+#if defined(DDB)
#define BKPT_INST (KERNEL_BREAKPOINT) /* breakpoint
instruction */
+#else
+/* breakpoint instruction if we use KGDB, this is used in
db_set_temp_breakpoint() */
+#define BKPT_INST (GDB5_BREAKPOINT)
+#endif
#define BKPT_SIZE (INSN_SIZE) /* size of
breakpoint inst */
#define BKPT_SET(inst) (BKPT_INST)
This might not be the best place to put the logic, seperation ddb/kgdb.
Too tired to write something else then nonsens now. bbl
- Karl