diff options
author | Christos Margiolis <christos@FreeBSD.org> | 2023-05-23 14:19:25 +0000 |
---|---|---|
committer | Christos Margiolis <christos@FreeBSD.org> | 2023-05-23 14:19:25 +0000 |
commit | 21a16d55cc15b12809b982c2026a26bcf97fe79b (patch) | |
tree | 54bb99442e2655f0000defa4032b0148a9f9892a /sys/cddl | |
parent | db05f9fbfb1a92caccaf37154666a99373028588 (diff) | |
download | src-21a16d55cc15b12809b982c2026a26bcf97fe79b.tar.gz src-21a16d55cc15b12809b982c2026a26bcf97fe79b.zip |
Diffstat (limited to 'sys/cddl')
-rw-r--r-- | sys/cddl/dev/dtrace/aarch64/dtrace_isa.c | 18 | ||||
-rw-r--r-- | sys/cddl/dev/dtrace/aarch64/regset.h | 35 |
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 } |