Module Name:    src
Committed By:   jakllsch
Date:           Sat Sep 15 19:47:48 UTC 2018

Modified Files:
        src/sys/arch/aarch64/aarch64: db_disasm.c db_machdep.c db_trace.c
            disasm.c
        src/sys/arch/aarch64/include: db_machdep.h machdep.h pmap.h
        src/usr.sbin/crash: Makefile

Log Message:
make kernel-groveling crash(8) work on aarch64


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/aarch64/aarch64/db_disasm.c
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/aarch64/aarch64/db_machdep.c
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/aarch64/aarch64/db_trace.c
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/aarch64/aarch64/disasm.c
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/aarch64/include/db_machdep.h
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/aarch64/include/machdep.h
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/aarch64/include/pmap.h
cvs rdiff -u -r1.40 -r1.41 src/usr.sbin/crash/Makefile

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/aarch64/aarch64/db_disasm.c
diff -u src/sys/arch/aarch64/aarch64/db_disasm.c:1.3 src/sys/arch/aarch64/aarch64/db_disasm.c:1.4
--- src/sys/arch/aarch64/aarch64/db_disasm.c:1.3	Tue Jul 17 10:07:49 2018
+++ src/sys/arch/aarch64/aarch64/db_disasm.c	Sat Sep 15 19:47:48 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: db_disasm.c,v 1.3 2018/07/17 10:07:49 ryo Exp $ */
+/* $NetBSD: db_disasm.c,v 1.4 2018/09/15 19:47:48 jakllsch Exp $ */
 
 /*
  * Copyright (c) 2017 Ryo Shimizu <r...@nerv.org>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_disasm.c,v 1.3 2018/07/17 10:07:49 ryo Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_disasm.c,v 1.4 2018/09/15 19:47:48 jakllsch Exp $");
 
 #include <sys/param.h>
 #include <machine/db_machdep.h>
@@ -35,6 +35,7 @@ __KERNEL_RCSID(0, "$NetBSD: db_disasm.c,
 #include <ddb/db_sym.h>
 #include <ddb/db_output.h>
 #include <ddb/db_access.h>
+#include <ddb/db_user.h>
 
 #include <arch/aarch64/aarch64/disasm.h>
 

Index: src/sys/arch/aarch64/aarch64/db_machdep.c
diff -u src/sys/arch/aarch64/aarch64/db_machdep.c:1.7 src/sys/arch/aarch64/aarch64/db_machdep.c:1.8
--- src/sys/arch/aarch64/aarch64/db_machdep.c:1.7	Tue Aug 14 05:51:54 2018
+++ src/sys/arch/aarch64/aarch64/db_machdep.c	Sat Sep 15 19:47:48 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: db_machdep.c,v 1.7 2018/08/14 05:51:54 ryo Exp $ */
+/* $NetBSD: db_machdep.c,v 1.8 2018/09/15 19:47:48 jakllsch Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_machdep.c,v 1.7 2018/08/14 05:51:54 ryo Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_machdep.c,v 1.8 2018/09/15 19:47:48 jakllsch Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -55,6 +55,7 @@ __KERNEL_RCSID(0, "$NetBSD: db_machdep.c
 #include <ddb/db_sym.h>
 #include <ddb/db_extern.h>
 #include <ddb/db_interface.h>
+#include <ddb/db_user.h>
 
 #include <dev/cons.h>
 
@@ -78,6 +79,7 @@ const struct db_command db_machine_comma
 		    NULL, NULL)
 	},
 #endif
+#if defined(_KERNEL)
 	{
 		DDB_ADD_CMD(
 		    "cpuinfo", db_md_cpuinfo_cmd, 0,
@@ -124,6 +126,7 @@ const struct db_command db_machine_comma
 		    "<param>",
 		    "\tparam: <address> | <#>")
 	},
+#endif
 	{
 		DDB_ADD_CMD(NULL, NULL, 0,
 		    NULL,
@@ -215,6 +218,7 @@ dump_trapframe(struct trapframe *tf, voi
 	    tf->tf_reg[30],  tf->tf_sp);
 }
 
+#if defined(_KERNEL)
 void
 db_md_cpuinfo_cmd(db_expr_t addr, bool have_addr, db_expr_t count,
     const char *modif)
@@ -715,6 +719,7 @@ db_md_watch_cmd(db_expr_t addr, bool hav
 
 	show_watchpoints();
 }
+#endif
 
 #ifdef MULTIPROCESSOR
 volatile struct cpu_info *db_trigger;
@@ -755,6 +760,7 @@ db_md_switch_cpu_cmd(db_expr_t addr, boo
 #endif /* _KERNEL */
 #endif /* MULTIPROCESSOR */
 
+#ifdef DDB
 int
 kdb_trap(int type, struct trapframe *tf)
 {
@@ -846,3 +852,4 @@ kdb_trap(int type, struct trapframe *tf)
 
 	return 1;
 }
+#endif

Index: src/sys/arch/aarch64/aarch64/db_trace.c
diff -u src/sys/arch/aarch64/aarch64/db_trace.c:1.5 src/sys/arch/aarch64/aarch64/db_trace.c:1.6
--- src/sys/arch/aarch64/aarch64/db_trace.c:1.5	Sat Sep 15 19:16:58 2018
+++ src/sys/arch/aarch64/aarch64/db_trace.c	Sat Sep 15 19:47:48 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: db_trace.c,v 1.5 2018/09/15 19:16:58 jakllsch Exp $ */
+/* $NetBSD: db_trace.c,v 1.6 2018/09/15 19:47:48 jakllsch Exp $ */
 
 /*
  * Copyright (c) 2017 Ryo Shimizu <r...@nerv.org>
@@ -28,7 +28,7 @@
 
 #include <sys/cdefs.h>
 
-__KERNEL_RCSID(0, "$NetBSD: db_trace.c,v 1.5 2018/09/15 19:16:58 jakllsch Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_trace.c,v 1.6 2018/09/15 19:47:48 jakllsch Exp $");
 
 #include <sys/param.h>
 #include <sys/proc.h>
@@ -53,8 +53,9 @@ __KERNEL_RCSID(0, "$NetBSD: db_trace.c,v
 #define MAXBACKTRACE	128	/* against infinite loop */
 
 
+__CTASSERT(VM_MIN_ADDRESS == 0);
 #define IN_USER_VM_ADDRESS(addr)	\
-	((VM_MIN_ADDRESS <= (addr)) && ((addr) < VM_MAX_ADDRESS))
+	((addr) < VM_MAX_ADDRESS)
 #define IN_KERNEL_VM_ADDRESS(addr)	\
 	((VM_MIN_KERNEL_ADDRESS <= (addr)) && ((addr) < VM_MAX_KERNEL_ADDRESS))
 
@@ -74,6 +75,7 @@ is_lwp(void *p)
 static const char *
 getlwpnamebysp(uint64_t sp)
 {
+#if defined(_KERNEL)
 	lwp_t *lwp;
 
 	for (lwp = db_lwp_first(); lwp != NULL; lwp = db_lwp_next(lwp)) {
@@ -82,6 +84,7 @@ getlwpnamebysp(uint64_t sp)
 			return lwp->l_name;
 		}
 	}
+#endif
 	return "unknown";
 }
 
@@ -157,6 +160,7 @@ db_stack_trace_print(db_expr_t addr, boo
 		}
 	}
 
+#if defined(_KERNEL)
 	if (!have_addr) {
 		if (trace_lwp) {
 			addr = (db_expr_t)curlwp;
@@ -166,6 +170,7 @@ db_stack_trace_print(db_expr_t addr, boo
 			tf = DDB_REGS;
 		}
 	}
+#endif
 
 	if (trace_thread) {
 		proc_t *pp, p;
@@ -193,12 +198,15 @@ db_stack_trace_print(db_expr_t addr, boo
 		db_read_bytes(addr, sizeof(l), (char *)&l);
 		db_read_bytes((db_addr_t)l.l_proc, sizeof(p), (char *)&p);
 
-		if (addr == (db_addr_t)curlwp) {
+#if defined(_KERNEL)
+		if (addr == (db_expr_t)curlwp) {
 			fp = (uint64_t)&DDB_REGS->tf_reg[29];	/* &reg[29]={fp,lr} */
 			tf = DDB_REGS;
 			(*pr)("trace: pid %d lid %d (curlwp) at tf %p\n",
 			    p.p_pid, l.l_lid, tf);
-		} else {
+		} else
+#endif
+		{
 			tf = l.l_md.md_ktf;
 			db_read_bytes((db_addr_t)&tf->tf_reg[29], sizeof(fp), (char *)&fp);
 			(*pr)("trace: pid %d lid %d at tf %p\n",
@@ -215,12 +223,14 @@ db_stack_trace_print(db_expr_t addr, boo
 		count = MAXBACKTRACE;
 
 	if (tf != NULL) {
+#if defined(_KERNEL)
 		(*pr)("---- trapframe %p (%zu bytes) ----\n",
 		    tf, sizeof(*tf));
 		dump_trapframe(tf, pr);
 		(*pr)("------------------------"
 		      "------------------------\n");
 
+#endif
 		lastfp = lastlr = lr = fp = 0;
 		db_read_bytes((db_addr_t)&tf->tf_pc, sizeof(lr), (char *)&lr);
 		db_read_bytes((db_addr_t)&tf->tf_reg[29], sizeof(fp), (char *)&fp);
@@ -243,6 +253,7 @@ db_stack_trace_print(db_expr_t addr, boo
 		if (!trace_user && IN_USER_VM_ADDRESS(lr))
 			break;
 
+#if defined(_KERNEL)
 		extern char el1_trap[];	/* XXX */
 		extern char el0_trap[];	/* XXX */
 		if (((char *)(lr - 4) == (char *)el0_trap) ||
@@ -281,7 +292,9 @@ db_stack_trace_print(db_expr_t addr, boo
 
 			pr_traceaddr("fp", fp, lr, flags, pr);
 
-		} else {
+		} else
+#endif
+		{
 			pr_traceaddr("fp", fp, lr - 4, flags, pr);
 		}
 	}

Index: src/sys/arch/aarch64/aarch64/disasm.c
diff -u src/sys/arch/aarch64/aarch64/disasm.c:1.4 src/sys/arch/aarch64/aarch64/disasm.c:1.5
--- src/sys/arch/aarch64/aarch64/disasm.c:1.4	Sat Jul 28 09:54:32 2018
+++ src/sys/arch/aarch64/aarch64/disasm.c	Sat Sep 15 19:47:48 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: disasm.c,v 1.4 2018/07/28 09:54:32 ryo Exp $	*/
+/*	$NetBSD: disasm.c,v 1.5 2018/09/15 19:47:48 jakllsch Exp $	*/
 
 /*
  * Copyright (c) 2018 Ryo Shimizu <r...@nerv.org>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: disasm.c,v 1.4 2018/07/28 09:54:32 ryo Exp $");
+__KERNEL_RCSID(0, "$NetBSD: disasm.c,v 1.5 2018/09/15 19:47:48 jakllsch Exp $");
 
 #include <sys/param.h>
 #include <sys/types.h>
@@ -35,6 +35,10 @@ __KERNEL_RCSID(0, "$NetBSD: disasm.c,v 1
 
 #include <arch/aarch64/aarch64/disasm.h>
 
+#ifndef _KERNEL
+#include <stdio.h>
+#include <stdbool.h>
+#endif
 
 #define PRINTF		di->di_printf
 #define PRINTADDR	di->di_printaddr

Index: src/sys/arch/aarch64/include/db_machdep.h
diff -u src/sys/arch/aarch64/include/db_machdep.h:1.6 src/sys/arch/aarch64/include/db_machdep.h:1.7
--- src/sys/arch/aarch64/include/db_machdep.h:1.6	Tue Jul 17 10:07:49 2018
+++ src/sys/arch/aarch64/include/db_machdep.h	Sat Sep 15 19:47:48 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: db_machdep.h,v 1.6 2018/07/17 10:07:49 ryo Exp $ */
+/* $NetBSD: db_machdep.h,v 1.7 2018/09/15 19:47:48 jakllsch Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -68,6 +68,7 @@
 
 #include <sys/types.h>
 #include <aarch64/frame.h>
+#include <ddb/db_user.h>
 
 typedef long long int db_expr_t;
 #define DDB_EXPR_FMT "ll"
@@ -214,6 +215,7 @@ void aarch64_watchpoint_set(int, vaddr_t
 #define WATCHPOINT_ACCESS_LOADSTORE	0x03
 #define WATCHPOINT_ACCESS_MASK		0x03
 
+#define DB_ELF_SYMBOLS
 
 #elif defined(__arm__)
 

Index: src/sys/arch/aarch64/include/machdep.h
diff -u src/sys/arch/aarch64/include/machdep.h:1.4 src/sys/arch/aarch64/include/machdep.h:1.5
--- src/sys/arch/aarch64/include/machdep.h:1.4	Sun Aug  5 06:48:50 2018
+++ src/sys/arch/aarch64/include/machdep.h	Sat Sep 15 19:47:48 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: machdep.h,v 1.4 2018/08/05 06:48:50 skrll Exp $	*/
+/*	$NetBSD: machdep.h,v 1.5 2018/09/15 19:47:48 jakllsch Exp $	*/
 
 /*
  * Copyright (c) 2017 Ryo Shimizu <r...@nerv.org>
@@ -36,6 +36,7 @@
 // initarm_common
 #include <machine/bootconfig.h>
 
+struct boot_physmem;
 
 static inline paddr_t
 aarch64_kern_vtophys(vaddr_t va)
@@ -108,6 +109,7 @@ void ucas_ras_check(struct trapframe *);
 int cpu_set_onfault(struct faultbuf *) __returns_twice;
 void cpu_jump_onfault(struct trapframe *, const struct faultbuf *, int);
 
+#if defined(_KERNEL)
 static inline void
 cpu_unset_onfault(void)
 {
@@ -128,6 +130,7 @@ cpu_disable_onfault(void)
 		curlwp->l_md.md_onfault = NULL;
 	return fb;
 }
+#endif
 
 /* fpu.c */
 void fpu_attach(struct cpu_info *);

Index: src/sys/arch/aarch64/include/pmap.h
diff -u src/sys/arch/aarch64/include/pmap.h:1.9 src/sys/arch/aarch64/include/pmap.h:1.10
--- src/sys/arch/aarch64/include/pmap.h:1.9	Mon Sep 10 15:14:50 2018
+++ src/sys/arch/aarch64/include/pmap.h	Sat Sep 15 19:47:48 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap.h,v 1.9 2018/09/10 15:14:50 maxv Exp $ */
+/* $NetBSD: pmap.h,v 1.10 2018/09/15 19:47:48 jakllsch Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -34,6 +34,7 @@
 
 #ifdef __aarch64__
 
+#ifdef _KERNEL
 #include <sys/types.h>
 #include <sys/pool.h>
 #include <sys/queue.h>
@@ -216,6 +217,8 @@ bool	pmap_extract_coherency(pmap_t, vadd
 
 #define	PMAP_MAPSIZE1	L2_SIZE
 
+#endif /* _KERNEL */
+
 #elif defined(__arm__)
 
 #include <arm/pmap.h>

Index: src/usr.sbin/crash/Makefile
diff -u src/usr.sbin/crash/Makefile:1.40 src/usr.sbin/crash/Makefile:1.41
--- src/usr.sbin/crash/Makefile:1.40	Sun May 20 03:09:02 2018
+++ src/usr.sbin/crash/Makefile	Sat Sep 15 19:47:48 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.40 2018/05/20 03:09:02 christos Exp $
+#	$NetBSD: Makefile,v 1.41 2018/09/15 19:47:48 jakllsch Exp $
 
 PROG=		crash
 MAN=		crash.8
@@ -19,6 +19,7 @@ DPADD+=	${LIBUTIL} ${LIBKVM} ${LIBEDIT} 
     || ${MACHINE} == "sparc" \
     || ${MACHINE} == "sparc64" \
     || ${MACHINE_CPU} == "arm" \
+    || ${MACHINE_CPU} == "aarch64" \
     || ${MACHINE_ARCH} == "m68k"
 SRCS+=	db_trace.c
 .if ${MACHINE_ARCH} != "m68k"
@@ -68,6 +69,9 @@ MACHINE_FAMILY = ${MACHINE_CPU}
 .PATH:	${S}/arch/arm/arm32
 SRCS+=disassem.c cpufunc_asm.S
 .endif
+.if ${MACHINE_CPU} == "aarch64"
+SRCS+=disasm.c
+.endif
 
 .PATH:	${S}/arch/${MACHINE_FAMILY}/${MACHINE_FAMILY}
 

Reply via email to