aboutsummaryrefslogtreecommitdiff
path: root/sys/cddl
diff options
context:
space:
mode:
authorChristos Margiolis <christos@FreeBSD.org>2023-05-23 14:19:25 +0000
committerChristos Margiolis <christos@FreeBSD.org>2023-05-23 14:19:25 +0000
commit21a16d55cc15b12809b982c2026a26bcf97fe79b (patch)
tree54bb99442e2655f0000defa4032b0148a9f9892a /sys/cddl
parentdb05f9fbfb1a92caccaf37154666a99373028588 (diff)
downloadsrc-21a16d55cc15b12809b982c2026a26bcf97fe79b.tar.gz
src-21a16d55cc15b12809b982c2026a26bcf97fe79b.zip
Diffstat (limited to 'sys/cddl')
-rw-r--r--sys/cddl/dev/dtrace/aarch64/dtrace_isa.c18
-rw-r--r--sys/cddl/dev/dtrace/aarch64/regset.h35
2 files changed, 48 insertions, 5 deletions
diff --git a/sys/cddl/dev/dtrace/aarch64/dtrace_isa.c b/sys/cddl/dev/dtrace/aarch64/dtrace_isa.c
index 98a0e6e498ed..09dc0b729928 100644
--- a/sys/cddl/dev/dtrace/aarch64/dtrace_isa.c
+++ b/sys/cddl/dev/dtrace/aarch64/dtrace_isa.c
@@ -280,10 +280,20 @@ dtrace_getstackdepth(int aframes)
ulong_t
dtrace_getreg(struct trapframe *rp, uint_t reg)
{
-
- printf("IMPLEMENT ME: %s\n", __func__);
-
- return (0);
+ switch (reg) {
+ case REG_X0 ... REG_X29:
+ return (rp->tf_x[reg]);
+ case REG_LR:
+ return (rp->tf_lr);
+ case REG_SP:
+ return (rp->tf_sp);
+ case REG_PC:
+ return (rp->tf_elr);
+ default:
+ DTRACE_CPUFLAG_SET(CPU_DTRACE_ILLOP);
+ return (0);
+ }
+ /* NOTREACHED */
}
static int
diff --git a/sys/cddl/dev/dtrace/aarch64/regset.h b/sys/cddl/dev/dtrace/aarch64/regset.h
index f99b48f8354f..492405d4a258 100644
--- a/sys/cddl/dev/dtrace/aarch64/regset.h
+++ b/sys/cddl/dev/dtrace/aarch64/regset.h
@@ -42,7 +42,40 @@
extern "C" {
#endif
-/* Place here */
+#define REG_X0 0
+#define REG_X1 1
+#define REG_X2 2
+#define REG_X3 3
+#define REG_X4 4
+#define REG_X5 5
+#define REG_X6 6
+#define REG_X7 7
+#define REG_X8 8
+#define REG_X9 9
+#define REG_X10 10
+#define REG_X11 11
+#define REG_X12 12
+#define REG_X13 13
+#define REG_X14 14
+#define REG_X15 15
+#define REG_X16 16
+#define REG_X17 17
+#define REG_X18 18
+#define REG_X19 19
+#define REG_X20 20
+#define REG_X21 21
+#define REG_X22 22
+#define REG_X23 23
+#define REG_X24 24
+#define REG_X25 25
+#define REG_X26 26
+#define REG_X27 27
+#define REG_X28 28
+#define REG_X29 29
+#define REG_FP REG_X29
+#define REG_LR 30
+#define REG_SP 31
+#define REG_PC 32
#ifdef __cplusplus
}