Module Name:    src
Committed By:   skrll
Date:           Sun Mar 30 08:00:34 UTC 2014

Modified Files:
        src/sys/arch/arm/arm32: db_interface.c db_machdep.c
        src/sys/arch/arm/include: db_machdep.h

Log Message:
Provide a DDB_REGS in the same way to others. Makes crash buildable.


To generate a diff of this commit:
cvs rdiff -u -r1.51 -r1.52 src/sys/arch/arm/arm32/db_interface.c
cvs rdiff -u -r1.20 -r1.21 src/sys/arch/arm/arm32/db_machdep.c
cvs rdiff -u -r1.20 -r1.21 src/sys/arch/arm/include/db_machdep.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/arm32/db_interface.c
diff -u src/sys/arch/arm/arm32/db_interface.c:1.51 src/sys/arch/arm/arm32/db_interface.c:1.52
--- src/sys/arch/arm/arm32/db_interface.c:1.51	Fri Mar 28 21:54:12 2014
+++ src/sys/arch/arm/arm32/db_interface.c	Sun Mar 30 08:00:34 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: db_interface.c,v 1.51 2014/03/28 21:54:12 matt Exp $	*/
+/*	$NetBSD: db_interface.c,v 1.52 2014/03/30 08:00:34 skrll Exp $	*/
 
 /*
  * Copyright (c) 1996 Scott K. Stevens
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_interface.c,v 1.51 2014/03/28 21:54:12 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_interface.c,v 1.52 2014/03/30 08:00:34 skrll Exp $");
 
 #include "opt_ddb.h"
 #include "opt_kgdb.h"
@@ -71,6 +71,9 @@ u_int db_fetch_reg(int, db_regs_t *);
 int db_trapper(u_int, u_int, trapframe_t *, int);
 
 int	db_active = 0;
+db_regs_t ddb_regs;	/* register state */
+db_regs_t *ddb_regp;
+
 #ifdef MULTIPROCESSOR
 volatile struct cpu_info *db_onproc;
 volatile struct cpu_info *db_newcpu;
@@ -87,6 +90,7 @@ int
 kdb_trap(int type, db_regs_t *regs)
 {
 	struct cpu_info * const ci = curcpu();
+	db_regs_t dbreg;
 	int s;
 
 	switch (type) {
@@ -148,13 +152,19 @@ kdb_trap(int type, db_regs_t *regs)
 #endif
 
 		s = splhigh();
-		ci->ci_ddb_regs = regs;
+		ci->ci_ddb_regs = &dbreg;
+		ddb_regp = &dbreg;
+		ddb_regs = *regs;
+
 		atomic_inc_32(&db_active);
 		cnpollc(true);
 		db_trap(type, 0/*code*/);
 		cnpollc(false);
 		atomic_dec_32(&db_active);
+
 		ci->ci_ddb_regs = NULL;
+		ddb_regp = &dbreg;
+		*regs = ddb_regs;
 		splx(s);
 
 #ifdef MULTIPROCESSOR

Index: src/sys/arch/arm/arm32/db_machdep.c
diff -u src/sys/arch/arm/arm32/db_machdep.c:1.20 src/sys/arch/arm/arm32/db_machdep.c:1.21
--- src/sys/arch/arm/arm32/db_machdep.c:1.20	Sat Mar 29 09:27:57 2014
+++ src/sys/arch/arm/arm32/db_machdep.c	Sun Mar 30 08:00:34 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: db_machdep.c,v 1.20 2014/03/29 09:27:57 skrll Exp $	*/
+/*	$NetBSD: db_machdep.c,v 1.21 2014/03/30 08:00:34 skrll Exp $	*/
 
 /*
  * Copyright (c) 1996 Mark Brinicombe
@@ -33,7 +33,7 @@
 #endif
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_machdep.c,v 1.20 2014/03/29 09:27:57 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_machdep.c,v 1.21 2014/03/30 08:00:34 skrll Exp $");
 
 #include <sys/param.h>
 #include <sys/cpu.h>
@@ -66,8 +66,7 @@ int db_access_irq_sp(const struct db_var
 static int
 ddb_reg_var(const struct db_variable *v, db_expr_t *ep, int op)
 {
-	KASSERT(curcpu()->ci_ddb_regs != NULL);
-	register_t * const rp = (register_t *)(curcpu()->ci_ddb_regs);
+	register_t * const rp = (register_t *)DDB_REGS;
 	if (op == DB_VAR_SET) {
 		rp[(uintptr_t)v->valuep] = *ep;
 	} else {

Index: src/sys/arch/arm/include/db_machdep.h
diff -u src/sys/arch/arm/include/db_machdep.h:1.20 src/sys/arch/arm/include/db_machdep.h:1.21
--- src/sys/arch/arm/include/db_machdep.h:1.20	Fri Mar 28 21:54:12 2014
+++ src/sys/arch/arm/include/db_machdep.h	Sun Mar 30 08:00:34 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: db_machdep.h,v 1.20 2014/03/28 21:54:12 matt Exp $	*/
+/*	$NetBSD: db_machdep.h,v 1.21 2014/03/30 08:00:34 skrll Exp $	*/
 
 /*
  * Copyright (c) 1996 Scott K Stevens
@@ -48,7 +48,14 @@ typedef	long		db_expr_t;	/* expression -
 
 typedef trapframe_t db_regs_t;
 
-#define	DDB_REGS	(curcpu()->ci_ddb_regs)
+#ifndef MULTIPROCESSOR
+extern db_regs_t ddb_regs;	/* register state */
+#define	DDB_REGS	(&ddb_regs)
+#else
+extern db_regs_t *ddb_regp;
+#define DDB_REGS	(ddb_regp)
+#define ddb_regs	(*ddb_regp)
+#endif
 
 #ifdef __PROG26
 #define	PC_REGS(regs)	((regs)->tf_r15 & R15_PC)

Reply via email to