patch-2.1.113 linux/include/asm-m68k/kgdb.h

Next file: linux/include/asm-m68k/machdep.h
Previous file: linux/include/asm-m68k/entry.h
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.112/linux/include/asm-m68k/kgdb.h linux/include/asm-m68k/kgdb.h
@@ -0,0 +1,83 @@
+/*
+ *  include/asm-m68k/kgdb.h
+ *
+ *  Copyright (C) 1996 Roman Hodek
+ */
+
+#ifndef __ASM_M68k_KGDB_H
+#define __ASM_M68k_KGDB_H
+
+/*
+ * Structure to save all register values in, already in the order gdb wants
+ * it. Note that the upper half of the SR field is recycled for the FORMAT and
+ * VECTOR fields. Hope that doesn't confuse gdb... That upper half is ignored
+ * on exiting the stub, so gdb can modify it as it likes.
+ */
+
+#define GDBREG_A6	14
+#define GDBREG_A7	15
+#define GDBREG_SP	15
+#define GDBREG_SR	16
+#define GDBREG_PC	17
+#define GDBREG_FP0	18
+#define GDBREG_FP7	25
+#define GDBREG_FPCR	26
+#define GDBREG_FPIAR 28
+
+#define GDBOFFA_D6	(6*4)
+#define GDBOFFA_A3	(11*4)
+
+#define NUMREGSBYTES	180
+
+#ifndef __ASSEMBLY__
+
+struct gdb_regs {
+    long		   regs[16];		/* d0-a7 */
+    unsigned	   format :  4; 	/* frame format specifier */
+    unsigned	   vector : 12; 	/* vector offset */
+    unsigned short sr;				/* status register */
+    unsigned long  pc;				/* program counter */
+	unsigned long  fpregs[8*3];		/* fp0-fp7 */
+	unsigned long  fpcntl[3];		/* fpcr, fpsr, fpiar */
+};
+
+extern struct gdb_regs kgdb_registers;
+extern void kgdb_init( void );
+struct frame;
+extern asmlinkage void enter_kgdb( struct pt_regs *fp );
+
+extern int kgdb_initialized;
+
+/*
+ * This function will generate a breakpoint exception.  It is used at the
+ * beginning of a program to sync up with a debugger and can be used
+ * otherwise as a quick means to stop program execution and "break" into
+ * the debugger.
+ */
+extern inline void breakpoint( void )
+{
+	if (!kgdb_initialized)
+		/* if kgdb not inited, do nothing */
+		return;
+	
+	/* breakpoint instruction is TRAP #15 */
+	__asm__ __volatile__ ( "trap #15" );
+}
+
+/*
+ * This function will report a SIGABORT to gdb.
+ */
+extern inline void kgdb_abort( void )
+{
+	if (!kgdb_initialized)
+		/* if kgdb not inited, do nothing */
+		return;
+	
+	/* TRAP #14 is reported as SIGABORT */
+	__asm__ __volatile__ ( "trap #14" );
+}
+
+#endif /* __ASSEMBLY__ */
+
+#endif /* __ASM_M68k_KGDB_H */
+

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov