aboutsummaryrefslogtreecommitdiff
path: root/sys/cddl/dev
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2019-09-23 15:08:17 +0000
committerMark Johnston <markj@FreeBSD.org>2019-09-23 15:08:17 +0000
commit9093dd9a66113e7ab2abf2557319a4acc40651f0 (patch)
tree775889a5d1cddd075418acea3ea0d9f57ec15cf3 /sys/cddl/dev
parent07bf14bb72609dd138d0f4cedd8443684cc9a1cd (diff)
Notes
Diffstat (limited to 'sys/cddl/dev')
-rw-r--r--sys/cddl/dev/dtrace/amd64/dtrace_asm.S16
-rw-r--r--sys/cddl/dev/dtrace/amd64/dtrace_subr.c20
-rw-r--r--sys/cddl/dev/dtrace/i386/dtrace_asm.S16
-rw-r--r--sys/cddl/dev/dtrace/i386/dtrace_subr.c20
4 files changed, 38 insertions, 34 deletions
diff --git a/sys/cddl/dev/dtrace/amd64/dtrace_asm.S b/sys/cddl/dev/dtrace/amd64/dtrace_asm.S
index 22e1d6964fb8..13bd930d5f2f 100644
--- a/sys/cddl/dev/dtrace/amd64/dtrace_asm.S
+++ b/sys/cddl/dev/dtrace/amd64/dtrace_asm.S
@@ -150,22 +150,6 @@ bp_ret:
END(dtrace_invop_start)
/*
-void dtrace_invop_init(void)
-*/
- ENTRY(dtrace_invop_init)
- movq $dtrace_invop_start, dtrace_invop_jump_addr(%rip)
- ret
- END(dtrace_invop_init)
-
-/*
-void dtrace_invop_uninit(void)
-*/
- ENTRY(dtrace_invop_uninit)
- movq $0, dtrace_invop_jump_addr(%rip)
- ret
- END(dtrace_invop_uninit)
-
-/*
greg_t dtrace_getfp(void)
*/
ENTRY(dtrace_getfp)
diff --git a/sys/cddl/dev/dtrace/amd64/dtrace_subr.c b/sys/cddl/dev/dtrace/amd64/dtrace_subr.c
index 82d20ebba936..cf24e6adae3f 100644
--- a/sys/cddl/dev/dtrace/amd64/dtrace_subr.c
+++ b/sys/cddl/dev/dtrace/amd64/dtrace_subr.c
@@ -48,8 +48,12 @@
#include <vm/pmap.h>
extern void dtrace_getnanotime(struct timespec *tsp);
+extern int (*dtrace_invop_jump_addr)(struct trapframe *);
-int dtrace_invop(uintptr_t, struct trapframe *, uintptr_t);
+int dtrace_invop(uintptr_t, struct trapframe *, uintptr_t);
+int dtrace_invop_start(struct trapframe *frame);
+void dtrace_invop_init(void);
+void dtrace_invop_uninit(void);
typedef struct dtrace_invop_hdlr {
int (*dtih_func)(uintptr_t, struct trapframe *, uintptr_t);
@@ -109,6 +113,20 @@ dtrace_invop_remove(int (*func)(uintptr_t, struct trapframe *, uintptr_t))
kmem_free(hdlr, 0);
}
+void
+dtrace_invop_init(void)
+{
+
+ dtrace_invop_jump_addr = dtrace_invop_start;
+}
+
+void
+dtrace_invop_uninit(void)
+{
+
+ dtrace_invop_jump_addr = NULL;
+}
+
/*ARGSUSED*/
void
dtrace_toxic_ranges(void (*func)(uintptr_t base, uintptr_t limit))
diff --git a/sys/cddl/dev/dtrace/i386/dtrace_asm.S b/sys/cddl/dev/dtrace/i386/dtrace_asm.S
index 116db1f84be1..e8767c74efc0 100644
--- a/sys/cddl/dev/dtrace/i386/dtrace_asm.S
+++ b/sys/cddl/dev/dtrace/i386/dtrace_asm.S
@@ -135,22 +135,6 @@ invop_nop:
END(dtrace_invop_start)
/*
-void dtrace_invop_init(void)
-*/
- ENTRY(dtrace_invop_init)
- movl $dtrace_invop_start, dtrace_invop_jump_addr
- ret
- END(dtrace_invop_init)
-
-/*
-void dtrace_invop_uninit(void)
-*/
- ENTRY(dtrace_invop_uninit)
- movl $0, dtrace_invop_jump_addr
- ret
- END(dtrace_invop_uninit)
-
-/*
greg_t dtrace_getfp(void)
*/
diff --git a/sys/cddl/dev/dtrace/i386/dtrace_subr.c b/sys/cddl/dev/dtrace/i386/dtrace_subr.c
index 4c0decaa3c87..37cc7601bef5 100644
--- a/sys/cddl/dev/dtrace/i386/dtrace_subr.c
+++ b/sys/cddl/dev/dtrace/i386/dtrace_subr.c
@@ -51,8 +51,12 @@
extern uintptr_t kernelbase;
extern void dtrace_getnanotime(struct timespec *tsp);
+extern int (*dtrace_invop_jump_addr)(struct trapframe *);
-int dtrace_invop(uintptr_t, struct trapframe *, uintptr_t);
+int dtrace_invop(uintptr_t, struct trapframe *, uintptr_t);
+int dtrace_invop_start(struct trapframe *frame);
+void dtrace_invop_init(void);
+void dtrace_invop_uninit(void);
typedef struct dtrace_invop_hdlr {
int (*dtih_func)(uintptr_t, struct trapframe *, uintptr_t);
@@ -113,6 +117,20 @@ dtrace_invop_remove(int (*func)(uintptr_t, struct trapframe *, uintptr_t))
}
void
+dtrace_invop_init(void)
+{
+
+ dtrace_invop_jump_addr = dtrace_invop_start;
+}
+
+void
+dtrace_invop_uninit(void)
+{
+
+ dtrace_invop_jump_addr = NULL;
+}
+
+void
dtrace_toxic_ranges(void (*func)(uintptr_t base, uintptr_t limit))
{
(*func)(0, kernelbase);