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