Module Name:    src
Committed By:   thorpej
Date:           Wed Nov 22 01:58:02 UTC 2023

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

Log Message:
Changes to let the Alpha DDB code build in user-space for crash(8).


To generate a diff of this commit:
cvs rdiff -u -r1.41 -r1.42 src/sys/arch/alpha/alpha/db_interface.c
cvs rdiff -u -r1.22 -r1.23 src/sys/arch/alpha/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/alpha/alpha/db_interface.c
diff -u src/sys/arch/alpha/alpha/db_interface.c:1.41 src/sys/arch/alpha/alpha/db_interface.c:1.42
--- src/sys/arch/alpha/alpha/db_interface.c:1.41	Tue Nov 21 22:19:12 2023
+++ src/sys/arch/alpha/alpha/db_interface.c	Wed Nov 22 01:58:02 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: db_interface.c,v 1.41 2023/11/21 22:19:12 thorpej Exp $ */
+/* $NetBSD: db_interface.c,v 1.42 2023/11/22 01:58:02 thorpej Exp $ */
 
 /*
  * Mach Operating System
@@ -54,7 +54,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(0, "$NetBSD: db_interface.c,v 1.41 2023/11/21 22:19:12 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_interface.c,v 1.42 2023/11/22 01:58:02 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/proc.h>
@@ -70,6 +70,7 @@ __KERNEL_RCSID(0, "$NetBSD: db_interface
 
 #include <machine/alpha_instruction.h>
 
+#include <ddb/db_user.h>
 #include <ddb/db_active.h>
 #include <ddb/db_sym.h>
 #include <ddb/db_command.h>
@@ -79,7 +80,6 @@ __KERNEL_RCSID(0, "$NetBSD: db_interface
 #include <ddb/db_variables.h>
 #include <ddb/db_interface.h>
 
-
 #if 0
 extern char *trap_type[];
 extern int trap_types;
@@ -159,10 +159,13 @@ db_alpha_regop(const struct db_variable 
 	unsigned long zeroval = 0;
 	struct trapframe *f = NULL;
 
+#ifdef _KERNEL			/* XXX ?? */
 	if (vp->modif != NULL && *vp->modif == 'u') {
 		if (curlwp != NULL)
 			f = curlwp->l_md.md_tf;
-	} else	f = DDB_REGS;
+	} else
+#endif /* _KERNEL */
+		f = DDB_REGS;
 	tfaddr = f == NULL ? &zeroval : &f->tf_regs[(u_long)vp->valuep];
 	switch (opcode) {
 	case DB_VAR_GET:
@@ -174,12 +177,16 @@ db_alpha_regop(const struct db_variable 
 		break;
 
 	default:
+#ifdef _KERNEL
 		panic("db_alpha_regop: unknown op %d", opcode);
+#endif
+		break;
 	}
 
 	return (0);
 }
 
+#ifdef _KERNEL
 /*
  * ddb_trap - field a kernel trap
  */
@@ -269,6 +276,7 @@ cpu_Debugger(void)
 
 	__asm volatile("call_pal 0x81");		/* bugchk */
 }
+#endif /* _KERNEL */
 
 /*
  * Alpha-specific ddb commands:
@@ -372,6 +380,7 @@ db_register_value(db_regs_t *regs, int r
 	return (regs->tf_regs[reg_to_frame[regno]]);
 }
 
+#ifdef _KERNEL
 /*
  * Support functions for software single-step.
  */
@@ -576,6 +585,7 @@ db_branch_taken(int ins, db_addr_t pc, d
 
 	return (newpc);
 }
+#endif /* _KERNEL */
 
 unsigned long
 db_alpha_read_saved_reg(unsigned long *regp)
@@ -605,6 +615,9 @@ db_alpha_nlist db_alpha_nl[] = {
 	DB_ALPHA_SYM(SYM_XentRestart, XentRestart),
 	DB_ALPHA_SYM(SYM_exception_return, exception_return),
 	DB_ALPHA_SYM(SYM_alpha_kthread_backstop, alpha_kthread_backstop),
+#ifndef _KERNEL
+	DB_ALPHA_SYM(SYM_dumppcb, dumppcb),
+#endif /* _KERNEL */
 	DB_ALPHA_SYM_EOL
 };
 

Index: src/sys/arch/alpha/include/db_machdep.h
diff -u src/sys/arch/alpha/include/db_machdep.h:1.22 src/sys/arch/alpha/include/db_machdep.h:1.23
--- src/sys/arch/alpha/include/db_machdep.h:1.22	Tue Nov 21 21:23:56 2023
+++ src/sys/arch/alpha/include/db_machdep.h	Wed Nov 22 01:58:02 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: db_machdep.h,v 1.22 2023/11/21 21:23:56 thorpej Exp $ */
+/* $NetBSD: db_machdep.h,v 1.23 2023/11/22 01:58:02 thorpej Exp $ */
 
 /*
  * Copyright (c) 1995 Carnegie-Mellon University.
@@ -38,6 +38,8 @@
 #include <uvm/uvm_extern.h>
 #include <machine/frame.h>
 
+#include <ddb/db_user.h>
+
 typedef	vaddr_t		db_addr_t;	/* address - unsigned */
 #define	DDB_EXPR_FMT	"l"		/* expression is long */
 typedef	long		db_expr_t;	/* expression - signed */
@@ -195,8 +197,14 @@ typedef long		kgdb_reg_t;
 #define	SYM_XentRestart			6
 #define	SYM_exception_return		7
 #define	SYM_alpha_kthread_backstop	8
+#ifdef _KERNEL
 #define	SYM___eol			(SYM_alpha_kthread_backstop + 1)
+#else
+#define	SYM_dumppcb			9
+#define	SYM___eol			(SYM_dumppcb + 1)
+#endif /* _KERNEL */
 
+#ifdef _KERNEL
 struct db_alpha_nlist {
 	vaddr_t		n_value;
 };
@@ -205,6 +213,14 @@ typedef struct db_alpha_nlist db_alpha_n
 
 #define	DB_ALPHA_SYM(i, x)	[(i)] = { .n_value = (vaddr_t)&(x) }
 #define	DB_ALPHA_SYM_EOL	[SYM___eol] = { .n_value = 0 }
+#else
+#include <nlist.h>
+
+typedef struct nlist db_alpha_nlist;
+
+#define	DB_ALPHA_SYM(i, x)	[(i)] = { .n_name = __STRING(x) }
+#define	DB_ALPHA_SYM_EOL	[SYM___eol] = { .n_name = NULL }
+#endif /* _KERNEL */
 
 bool		db_alpha_sym_is_trap(db_addr_t);
 bool		db_alpha_sym_is_backstop(db_addr_t);

Reply via email to