aboutsummaryrefslogtreecommitdiff
path: root/sys/cddl/dev/dtrace
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2014-08-04 21:41:01 +0000
committerMark Johnston <markj@FreeBSD.org>2014-08-04 21:41:01 +0000
commita53446693a10f136a352ea41cd750144953d2d2e (patch)
tree396d34a3e04bf1d3e478ddbf97dd5ccd36b43317 /sys/cddl/dev/dtrace
parente8fa7037fec73e35837ac0a649f636d0b1e8001c (diff)
Notes
Diffstat (limited to 'sys/cddl/dev/dtrace')
-rw-r--r--sys/cddl/dev/dtrace/amd64/dtrace_isa.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/sys/cddl/dev/dtrace/amd64/dtrace_isa.c b/sys/cddl/dev/dtrace/amd64/dtrace_isa.c
index 34d6f331ebee..3d3c43cd2e8a 100644
--- a/sys/cddl/dev/dtrace/amd64/dtrace_isa.c
+++ b/sys/cddl/dev/dtrace/amd64/dtrace_isa.c
@@ -367,7 +367,27 @@ dtrace_getarg(int arg, int aframes)
sizeof (uintptr_t));
if (arg <= inreg) {
- stack = (uintptr_t *)&rp->r_rdi;
+ switch (arg) {
+ case 0:
+ stack = (uintptr_t *)&rp->r_rdi;
+ break;
+ case 1:
+ stack = (uintptr_t *)&rp->r_rsi;
+ break;
+ case 2:
+ stack = (uintptr_t *)&rp->r_rdx;
+ break;
+ case 3:
+ stack = (uintptr_t *)&rp->r_rcx;
+ break;
+ case 4:
+ stack = (uintptr_t *)&rp->r_r8;
+ break;
+ case 5:
+ stack = (uintptr_t *)&rp->r_r9;
+ break;
+ }
+ arg = 0;
} else {
stack = (uintptr_t *)(rp->r_rsp);
arg -= inreg;