Module Name:    src
Committed By:   ryo
Date:           Mon Jul 30 15:59:44 UTC 2018

Modified Files:
        src/sys/arch/aarch64/aarch64: db_trace.c vectors.S

Log Message:
don't depend on clang code to backtrace. keep trapframe as framepointer if DDB.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/aarch64/aarch64/db_trace.c
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/aarch64/aarch64/vectors.S

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_trace.c
diff -u src/sys/arch/aarch64/aarch64/db_trace.c:1.3 src/sys/arch/aarch64/aarch64/db_trace.c:1.4
--- src/sys/arch/aarch64/aarch64/db_trace.c:1.3	Tue Jul 17 00:31:22 2018
+++ src/sys/arch/aarch64/aarch64/db_trace.c	Mon Jul 30 15:59:44 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: db_trace.c,v 1.3 2018/07/17 00:31:22 christos Exp $ */
+/* $NetBSD: db_trace.c,v 1.4 2018/07/30 15:59:44 ryo 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.3 2018/07/17 00:31:22 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_trace.c,v 1.4 2018/07/30 15:59:44 ryo Exp $");
 
 #include <sys/param.h>
 #include <sys/proc.h>
@@ -248,7 +248,7 @@ db_stack_trace_print(db_expr_t addr, boo
 		if (((char *)(lr - 4) == (char *)el0_trap) ||
 		    ((char *)(lr - 4) == (char *)el1_trap)) {
 
-			tf = (struct trapframe *)(lastfp + 16);
+			tf = (struct trapframe *)fp;
 
 			lastfp = (uint64_t)tf;
 			lastlr = lr;

Index: src/sys/arch/aarch64/aarch64/vectors.S
diff -u src/sys/arch/aarch64/aarch64/vectors.S:1.6 src/sys/arch/aarch64/aarch64/vectors.S:1.7
--- src/sys/arch/aarch64/aarch64/vectors.S:1.6	Tue Jul 17 10:01:59 2018
+++ src/sys/arch/aarch64/aarch64/vectors.S	Mon Jul 30 15:59:44 2018
@@ -1,7 +1,8 @@
-/*	$NetBSD: vectors.S,v 1.6 2018/07/17 10:01:59 ryo Exp $	*/
+/*	$NetBSD: vectors.S,v 1.7 2018/07/30 15:59:44 ryo Exp $	*/
 
 #include <aarch64/asm.h>
 #include "assym.h"
+#include "opt_ddb.h"
 
 	/*
 	 * vector_entry macro must be small enough to fit 0x80 bytes!
@@ -69,6 +70,9 @@
 
 	adr	x30, el\el\()_trap_exit	/* el[01]_trap_exit */
 	mov	x0, sp
+#ifdef DDB
+	mov	x29, sp			/* for backtrace */
+#endif
 	b	\label
 	.endm
 

Reply via email to