Page MenuHomeFreeBSD

D39611.id120433.diff
No OneTemporary

D39611.id120433.diff

diff --git a/cddl/lib/libdtrace/Makefile b/cddl/lib/libdtrace/Makefile
--- a/cddl/lib/libdtrace/Makefile
+++ b/cddl/lib/libdtrace/Makefile
@@ -128,6 +128,7 @@
.if ${MACHINE_CPUARCH} == "riscv"
SRCS+= instr_size.c
+DSRCS+= regs_riscv.d
.endif
YFLAGS+=-d
diff --git a/sys/cddl/dev/dtrace/riscv/dtrace_isa.c b/sys/cddl/dev/dtrace/riscv/dtrace_isa.c
--- a/sys/cddl/dev/dtrace/riscv/dtrace_isa.c
+++ b/sys/cddl/dev/dtrace/riscv/dtrace_isa.c
@@ -311,8 +311,33 @@
ulong_t
dtrace_getreg(struct trapframe *rp, uint_t reg)
{
-
- printf("IMPLEMENT ME: %s\n", __func__);
+ switch (reg) {
+ case REG_ZERO:
+ return (0);
+ case REG_RA:
+ return (rp->tf_ra);
+ case REG_SP:
+ return (rp->tf_sp);
+ case REG_GP:
+ return (rp->tf_gp);
+ case REG_TP:
+ return (rp->tf_tp);
+ case REG_T0 ... REG_T2:
+ return (rp->tf_t[reg - REG_T0]);
+ case REG_S0 ... REG_S1:
+ return (rp->tf_s[reg - REG_S0]);
+ case REG_A0 ... REG_A7:
+ return (rp->tf_a[reg - REG_A0]);
+ case REG_S2 ... REG_S11:
+ return (rp->tf_s[reg - REG_S2 + 2]);
+ case REG_T3 ... REG_T6:
+ return (rp->tf_t[reg - REG_T3 + 3]);
+ case REG_PC:
+ return (rp->tf_sepc);
+ default:
+ DTRACE_CPUFLAG_SET(CPU_DTRACE_ILLOP);
+ return (0);
+ }
return (0);
}
diff --git a/sys/cddl/dev/dtrace/riscv/regset.h b/sys/cddl/dev/dtrace/riscv/regset.h
--- a/sys/cddl/dev/dtrace/riscv/regset.h
+++ b/sys/cddl/dev/dtrace/riscv/regset.h
@@ -42,7 +42,39 @@
extern "C" {
#endif
-/* Place here */
+#define REG_ZERO 0
+#define REG_RA 1
+#define REG_SP 2
+#define REG_GP 3
+#define REG_TP 4
+#define REG_T0 5
+#define REG_T1 6
+#define REG_T2 7
+#define REG_S0 8
+#define REG_S1 9
+#define REG_A0 10
+#define REG_A1 11
+#define REG_A2 12
+#define REG_A3 13
+#define REG_A4 14
+#define REG_A5 15
+#define REG_A6 16
+#define REG_A7 17
+#define REG_S2 18
+#define REG_S3 19
+#define REG_S4 20
+#define REG_S5 21
+#define REG_S6 22
+#define REG_S7 23
+#define REG_S8 24
+#define REG_S9 25
+#define REG_S10 26
+#define REG_S11 27
+#define REG_T3 28
+#define REG_T4 29
+#define REG_T5 30
+#define REG_T6 31
+#define REG_PC 32
#ifdef __cplusplus
}

File Metadata

Mime Type
text/plain
Expires
Mon, Feb 9, 1:38 PM (43 m, 39 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28585105
Default Alt Text
D39611.id120433.diff (2 KB)

Event Timeline