summaryrefslogtreecommitdiff
path: root/sys/riscv
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2020-05-11 20:58:27 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2020-05-11 20:58:27 +0000
commitdea1ea9ed3db1ded3f5c6214c8bfbb3a49ffb2bf (patch)
tree5a39cc70e5f8b1202add50b033382d4be198b54e /sys/riscv
parent7ebf60ad57211c778f4c4a5a0c9c179aed1b02be (diff)
downloadsrc-test2-dea1ea9ed3db1ded3f5c6214c8bfbb3a49ffb2bf.tar.gz
src-test2-dea1ea9ed3db1ded3f5c6214c8bfbb3a49ffb2bf.zip
Notes
Diffstat (limited to 'sys/riscv')
-rw-r--r--sys/riscv/riscv/db_trace.c15
-rw-r--r--sys/riscv/riscv/machdep.c2
2 files changed, 7 insertions, 10 deletions
diff --git a/sys/riscv/riscv/db_trace.c b/sys/riscv/riscv/db_trace.c
index cb91170d7ed4..2a783b2ed0f0 100644
--- a/sys/riscv/riscv/db_trace.c
+++ b/sys/riscv/riscv/db_trace.c
@@ -130,15 +130,12 @@ db_trace_thread(struct thread *thr, int count)
struct unwind_state frame;
struct pcb *ctx;
- if (thr != curthread) {
- ctx = kdb_thr_ctx(thr);
-
- frame.sp = (uint64_t)ctx->pcb_sp;
- frame.fp = (uint64_t)ctx->pcb_s[0];
- frame.pc = (uint64_t)ctx->pcb_ra;
- db_stack_trace_cmd(&frame);
- } else
- db_trace_self();
+ ctx = kdb_thr_ctx(thr);
+
+ frame.sp = (uint64_t)ctx->pcb_sp;
+ frame.fp = (uint64_t)ctx->pcb_s[0];
+ frame.pc = (uint64_t)ctx->pcb_ra;
+ db_stack_trace_cmd(&frame);
return (0);
}
diff --git a/sys/riscv/riscv/machdep.c b/sys/riscv/riscv/machdep.c
index e0b05145e9ff..53c89ccf81b9 100644
--- a/sys/riscv/riscv/machdep.c
+++ b/sys/riscv/riscv/machdep.c
@@ -568,7 +568,7 @@ makectx(struct trapframe *tf, struct pcb *pcb)
memcpy(pcb->pcb_s, tf->tf_s, sizeof(tf->tf_s));
- pcb->pcb_ra = tf->tf_ra;
+ pcb->pcb_ra = tf->tf_sepc;
pcb->pcb_sp = tf->tf_sp;
pcb->pcb_gp = tf->tf_gp;
pcb->pcb_tp = tf->tf_tp;