Page MenuHomeFreeBSD

D26389.id76881.diff
No OneTemporary

D26389.id76881.diff

Index: sys/cddl/dev/dtrace/riscv/dtrace_subr.c
===================================================================
--- sys/cddl/dev/dtrace/riscv/dtrace_subr.c
+++ sys/cddl/dev/dtrace/riscv/dtrace_subr.c
@@ -254,7 +254,7 @@
uint32_t imm;
int invop;
- invop = dtrace_invop(frame->tf_sepc, frame, frame->tf_sepc);
+ invop = dtrace_invop(frame->tf_sepc, frame, frame->tf_a[0]);
if (invop == 0)
return (-1);
Index: sys/cddl/dev/fbt/riscv/fbt_isa.c
===================================================================
--- sys/cddl/dev/fbt/riscv/fbt_isa.c
+++ sys/cddl/dev/fbt/riscv/fbt_isa.c
@@ -59,9 +59,14 @@
if ((uintptr_t)fbt->fbtp_patchpoint == addr) {
cpu->cpu_dtrace_caller = addr;
- dtrace_probe(fbt->fbtp_id, frame->tf_a[0],
- frame->tf_a[1], frame->tf_a[2],
- frame->tf_a[3], frame->tf_a[4]);
+ if (fbt->fbtp_roffset == 0) {
+ dtrace_probe(fbt->fbtp_id, frame->tf_a[0],
+ frame->tf_a[1], frame->tf_a[2],
+ frame->tf_a[3], frame->tf_a[4]);
+ } else {
+ dtrace_probe(fbt->fbtp_id, fbt->fbtp_roffset,
+ frame->tf_a[0], 0, 0, 0);
+ }
cpu->cpu_dtrace_caller = 0;
return (fbt->fbtp_savedval);
@@ -233,6 +238,7 @@
fbt->fbtp_loadcnt = lf->loadcnt;
fbt->fbtp_symindx = symindx;
fbt->fbtp_rval = rval;
+ fbt->fbtp_roffset = (uintptr_t)instr - (uintptr_t)symval->value;
fbt->fbtp_savedval = *instr;
fbt->fbtp_patchval = patchval;
fbt->fbtp_hashnext = fbt_probetab[FBT_ADDR2NDX(instr)];

File Metadata

Mime Type
text/plain
Expires
Wed, Apr 29, 5:19 PM (5 h, 39 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
32365798
Default Alt Text
D26389.id76881.diff (1 KB)

Event Timeline