diff options
Diffstat (limited to 'sys/cddl/contrib/opensolaris/uts/powerpc/dtrace/fasttrap_isa.c')
-rw-r--r-- | sys/cddl/contrib/opensolaris/uts/powerpc/dtrace/fasttrap_isa.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/sys/cddl/contrib/opensolaris/uts/powerpc/dtrace/fasttrap_isa.c b/sys/cddl/contrib/opensolaris/uts/powerpc/dtrace/fasttrap_isa.c index 69ba0f3c64d0..8f370ba6a186 100644 --- a/sys/cddl/contrib/opensolaris/uts/powerpc/dtrace/fasttrap_isa.c +++ b/sys/cddl/contrib/opensolaris/uts/powerpc/dtrace/fasttrap_isa.c @@ -246,12 +246,16 @@ fasttrap_usdt_args(fasttrap_probe_t *probe, struct reg *rp, int argc, if (x < 8) argv[i] = rp->fixreg[x]; else +#ifdef __powerpc64__ if (SV_PROC_FLAG(curproc, SV_ILP32)) +#endif argv[i] = fuword32((void *)(rp->fixreg[1] + 8 + (x * sizeof(uint32_t)))); +#ifdef __powerpc64__ else argv[i] = fuword64((void *)(rp->fixreg[1] + 48 + (x * sizeof(uint64_t)))); +#endif } for (; i < argc; i++) { @@ -486,6 +490,10 @@ fasttrap_pid_probe(struct trapframe *frame) rp->lr = rp->pc + 4; break; case FASTTRAP_T_COMMON: + curthread->t_dtrace_pc = pc; + curthread->t_dtrace_npc = pc + 4; + curthread->t_dtrace_on = 1; + new_pc = pc; break; }; done: |