diff options
| author | Mark Johnston <markj@FreeBSD.org> | 2014-08-04 21:41:01 +0000 |
|---|---|---|
| committer | Mark Johnston <markj@FreeBSD.org> | 2014-08-04 21:41:01 +0000 |
| commit | a53446693a10f136a352ea41cd750144953d2d2e (patch) | |
| tree | 396d34a3e04bf1d3e478ddbf97dd5ccd36b43317 /sys/cddl/dev/dtrace | |
| parent | e8fa7037fec73e35837ac0a649f636d0b1e8001c (diff) | |
Notes
Diffstat (limited to 'sys/cddl/dev/dtrace')
| -rw-r--r-- | sys/cddl/dev/dtrace/amd64/dtrace_isa.c | 22 |
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; |
