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 <[email protected]>
@@ -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