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)