Page MenuHomeFreeBSD

D26389.diff
No OneTemporary

D26389.diff

Index: head/sys/cddl/dev/dtrace/riscv/dtrace_subr.c
===================================================================
--- head/sys/cddl/dev/dtrace/riscv/dtrace_subr.c
+++ head/sys/cddl/dev/dtrace/riscv/dtrace_subr.c
@@ -53,7 +53,7 @@
extern int (*dtrace_invop_jump_addr)(struct trapframe *);
extern void dtrace_getnanotime(struct timespec *tsp);
-int dtrace_invop(uintptr_t, struct trapframe *, uintptr_t);
+int dtrace_invop(uintptr_t, struct trapframe *);
void dtrace_invop_init(void);
void dtrace_invop_uninit(void);
@@ -65,13 +65,13 @@
dtrace_invop_hdlr_t *dtrace_invop_hdlr;
int
-dtrace_invop(uintptr_t addr, struct trapframe *frame, uintptr_t eax)
+dtrace_invop(uintptr_t addr, struct trapframe *frame)
{
dtrace_invop_hdlr_t *hdlr;
int rval;
for (hdlr = dtrace_invop_hdlr; hdlr != NULL; hdlr = hdlr->dtih_next)
- if ((rval = hdlr->dtih_func(addr, frame, eax)) != 0)
+ if ((rval = hdlr->dtih_func(addr, frame, 0)) != 0)
return (rval);
return (0);
@@ -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);
if (invop == 0)
return (-1);
Index: head/sys/cddl/dev/fbt/riscv/fbt_isa.c
===================================================================
--- head/sys/cddl/dev/fbt/riscv/fbt_isa.c
+++ head/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], frame->tf_a[1], 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
Mon, Mar 2, 4:44 PM (8 h, 57 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29154462
Default Alt Text
D26389.diff (2 KB)

Event Timeline