Module Name:    src
Committed By:   christos
Date:           Sat Mar 13 22:31:15 UTC 2010

Modified Files:
        src/external/cddl/osnet/dev/dtrace: dtrace_debug.c dtrace_modevent.c
        src/external/cddl/osnet/dev/dtrace/amd64: dtrace_asm.S dtrace_isa.c
            dtrace_subr.c
        src/external/cddl/osnet/dev/dtrace/i386: dtrace_asm.S
        src/external/cddl/osnet/dev/fbt: fbt.c
        src/external/cddl/osnet/dev/sdt: sdt.c
        src/external/cddl/osnet/dist/uts/common/dtrace: dtrace.c
        src/external/cddl/osnet/dist/uts/common/sys: ccompile.h ctf_api.h
            dtrace_impl.h processor.h
        src/external/cddl/osnet/sys/sys: cpuvar.h cred.h proc.h

Log Message:
make dtrace compile on amd64.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/external/cddl/osnet/dev/dtrace/dtrace_debug.c \
    src/external/cddl/osnet/dev/dtrace/dtrace_modevent.c
cvs rdiff -u -r1.2 -r1.3 \
    src/external/cddl/osnet/dev/dtrace/amd64/dtrace_asm.S \
    src/external/cddl/osnet/dev/dtrace/amd64/dtrace_isa.c \
    src/external/cddl/osnet/dev/dtrace/amd64/dtrace_subr.c
cvs rdiff -u -r1.2 -r1.3 src/external/cddl/osnet/dev/dtrace/i386/dtrace_asm.S
cvs rdiff -u -r1.4 -r1.5 src/external/cddl/osnet/dev/fbt/fbt.c
cvs rdiff -u -r1.5 -r1.6 src/external/cddl/osnet/dev/sdt/sdt.c
cvs rdiff -u -r1.9 -r1.10 \
    src/external/cddl/osnet/dist/uts/common/dtrace/dtrace.c
cvs rdiff -u -r1.1.1.1 -r1.2 \
    src/external/cddl/osnet/dist/uts/common/sys/ccompile.h
cvs rdiff -u -r1.2 -r1.3 \
    src/external/cddl/osnet/dist/uts/common/sys/ctf_api.h
cvs rdiff -u -r1.3 -r1.4 \
    src/external/cddl/osnet/dist/uts/common/sys/dtrace_impl.h
cvs rdiff -u -r1.4 -r1.5 \
    src/external/cddl/osnet/dist/uts/common/sys/processor.h
cvs rdiff -u -r1.6 -r1.7 src/external/cddl/osnet/sys/sys/cpuvar.h
cvs rdiff -u -r1.3 -r1.4 src/external/cddl/osnet/sys/sys/cred.h
cvs rdiff -u -r1.4 -r1.5 src/external/cddl/osnet/sys/sys/proc.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/external/cddl/osnet/dev/dtrace/dtrace_debug.c
diff -u src/external/cddl/osnet/dev/dtrace/dtrace_debug.c:1.2 src/external/cddl/osnet/dev/dtrace/dtrace_debug.c:1.3
--- src/external/cddl/osnet/dev/dtrace/dtrace_debug.c:1.2	Sat Feb 20 20:46:33 2010
+++ src/external/cddl/osnet/dev/dtrace/dtrace_debug.c	Sat Mar 13 17:31:15 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: dtrace_debug.c,v 1.2 2010/02/21 01:46:33 darran Exp $	*/
+/*	$NetBSD: dtrace_debug.c,v 1.3 2010/03/13 22:31:15 christos Exp $	*/
 
 /*-
  * Copyright (C) 2008 John Birrell <j...@freebsd.org>.
@@ -110,7 +110,6 @@
 static void
 dtrace_debug_init(void *dummy)
 {
-	int i;
 	struct dtrace_debug_data *d;
 	CPU_INFO_ITERATOR cpuind;
 	struct cpu_info *cinfo;
Index: src/external/cddl/osnet/dev/dtrace/dtrace_modevent.c
diff -u src/external/cddl/osnet/dev/dtrace/dtrace_modevent.c:1.2 src/external/cddl/osnet/dev/dtrace/dtrace_modevent.c:1.3
--- src/external/cddl/osnet/dev/dtrace/dtrace_modevent.c:1.2	Sat Feb 20 20:46:33 2010
+++ src/external/cddl/osnet/dev/dtrace/dtrace_modevent.c	Sat Mar 13 17:31:15 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: dtrace_modevent.c,v 1.2 2010/02/21 01:46:33 darran Exp $	*/
+/*	$NetBSD: dtrace_modevent.c,v 1.3 2010/03/13 22:31:15 christos Exp $	*/
 
 /*
  * CDDL HEADER START
@@ -29,7 +29,6 @@
 dtrace_modcmd(modcmd_t cmd, void *data)
 {
 	int bmajor = -1, cmajor = -1;
-	int error = 0;
 
 	switch (cmd) {
 	case MODULE_CMD_INIT:

Index: src/external/cddl/osnet/dev/dtrace/amd64/dtrace_asm.S
diff -u src/external/cddl/osnet/dev/dtrace/amd64/dtrace_asm.S:1.2 src/external/cddl/osnet/dev/dtrace/amd64/dtrace_asm.S:1.3
--- src/external/cddl/osnet/dev/dtrace/amd64/dtrace_asm.S:1.2	Sat Feb 20 20:46:33 2010
+++ src/external/cddl/osnet/dev/dtrace/amd64/dtrace_asm.S	Sat Mar 13 17:31:15 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: dtrace_asm.S,v 1.2 2010/02/21 01:46:33 darran Exp $	*/
+/*	$NetBSD: dtrace_asm.S,v 1.3 2010/03/13 22:31:15 christos Exp $	*/
 
 /*
  * CDDL HEADER START
@@ -32,11 +32,14 @@
 
 #define _ASM
 
-#include <machine/asmacros.h>
+
 #include <sys/cpuvar_defs.h>
 #include <sys/dtrace.h>
+#include <machine/asm.h>
+#define END(a)
+#define MEXITCOUNT
 
-#include "assym.s"
+#include "assym.h"
 
 #define INTR_POP				\
 	MEXITCOUNT;				\
@@ -78,7 +81,7 @@
 	pushq	(%rsi)
 	movq	%rsp, %rsi
 	call	dtrace_invop
-	ALTENTRY(dtrace_invop_callsite)
+//	ALTENTRY(dtrace_invop_callsite)
 	addq	$8, %rsp
 	cmpl	$DTRACE_INVOP_PUSHL_EBP, %eax
 	je	bp_push
@@ -144,7 +147,7 @@
 	/*NOTREACHED*/
 
 bp_ret:
-	INTR_POP
+//	INTR_POP
 	pushq	%rax			/* push temp */
 	movq	32(%rsp), %rax		/* load %rsp */
 	movq	(%rax), %rax		/* load calling RIP */
Index: src/external/cddl/osnet/dev/dtrace/amd64/dtrace_isa.c
diff -u src/external/cddl/osnet/dev/dtrace/amd64/dtrace_isa.c:1.2 src/external/cddl/osnet/dev/dtrace/amd64/dtrace_isa.c:1.3
--- src/external/cddl/osnet/dev/dtrace/amd64/dtrace_isa.c:1.2	Sat Feb 20 20:46:33 2010
+++ src/external/cddl/osnet/dev/dtrace/amd64/dtrace_isa.c	Sat Mar 13 17:31:15 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: dtrace_isa.c,v 1.2 2010/02/21 01:46:33 darran Exp $	*/
+/*	$NetBSD: dtrace_isa.c,v 1.3 2010/03/13 22:31:15 christos Exp $	*/
 
 /*
  * CDDL HEADER START
@@ -32,17 +32,19 @@
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/kernel.h>
-#include <sys/stack.h>
-#include <sys/pcpu.h>
+//#include <sys/stack.h>
+//#include <sys/pcpu.h>
 
 #include <machine/frame.h>
-#include <machine/md_var.h>
+//#include <machine/md_var.h>
 #include <machine/reg.h>
-#include <machine/stack.h>
+//#include <machine/stack.h>
 
-#include <vm/vm.h>
-#include <vm/vm_param.h>
-#include <vm/pmap.h>
+//#include <vm/vm.h>
+//#include <vm/vm_param.h>
+//#include <vm/pmap.h>
+#include <machine/vmparam.h>
+#include <machine/pmap.h>
 
 
 uint8_t dtrace_fuword8_nocheck(void *);
@@ -50,6 +52,19 @@
 uint32_t dtrace_fuword32_nocheck(void *);
 uint64_t dtrace_fuword64_nocheck(void *);
 
+uintptr_t kernelbase = (uintptr_t)KERNBASE;
+        
+#define INKERNEL(va) (((vm_offset_t)(va)) >= USRSTACK && \
+     ((vm_offset_t)(va)) < VM_MAX_KERNEL_ADDRESS)
+
+struct amd64_frame {     
+	struct amd64_frame	*f_frame;
+	int			 f_retaddr; 
+	int			 f_arg0;
+};
+
+typedef unsigned long vm_offset_t;
+
 void
 dtrace_getpcstack(pc_t *pcstack, int pcstack_limit, int aframes,
     uint32_t *intrpc)
@@ -58,7 +73,7 @@
 	register_t rbp;
 	struct amd64_frame *frame;
 	vm_offset_t callpc;
-	pc_t caller = (pc_t) solaris_cpu[curcpu].cpu_dtrace_caller;
+	pc_t caller = (pc_t) solaris_cpu[cpu_number()].cpu_dtrace_caller;
 
 	if (intrpc != 0)
 		pcstack[depth++] = (pc_t) intrpc;
@@ -89,7 +104,7 @@
 
 		if (frame->f_frame <= frame ||
 		    (vm_offset_t)frame->f_frame >=
-		    (vm_offset_t)rbp + KSTACK_PAGES * PAGE_SIZE)
+		    (vm_offset_t)rbp + KSTACK_SIZE)
 			break;
 		frame = frame->f_frame;
 	}
@@ -99,12 +114,13 @@
 	}
 }
 
+#ifdef notyet
 static int
 dtrace_getustack_common(uint64_t *pcstack, int pcstack_limit, uintptr_t pc,
     uintptr_t sp)
 {
 	volatile uint16_t *flags =
-	    (volatile uint16_t *)&cpu_core[curcpu].cpuc_dtrace_flags;
+	    (volatile uint16_t *)&cpu_core[cpu_number()].cpuc_dtrace_flags;
 	struct amd64_frame *frame;
 	int ret = 0;
 
@@ -141,11 +157,12 @@
 void
 dtrace_getupcstack(uint64_t *pcstack, int pcstack_limit)
 {
+	klwp_t *lwp = ttolwp(curthread);
 	proc_t *p = curproc;
-	struct trapframe *tf;
+	struct regs *rp;
 	uintptr_t pc, sp;
 	volatile uint16_t *flags =
-	    (volatile uint16_t *)&cpu_core[curcpu].cpuc_dtrace_flags;
+	    (volatile uint16_t *)&cpu_core[cpu_number()].cpuc_dtrace_flags;
 	int n;
 
 	if (*flags & CPU_DTRACE_FAULT)
@@ -157,7 +174,7 @@
 	/*
 	 * If there's no user context we still need to zero the stack.
 	 */
-	if (p == NULL || (tf = curthread->td_frame) == NULL)
+	if (lwp == NULL || p == NULL || (rp = lwp->lwp_regs) == NULL)
 		goto zero;
 
 	*pcstack++ = (uint64_t)p->p_pid;
@@ -166,8 +183,8 @@
 	if (pcstack_limit <= 0)
 		return;
 
-	pc = tf->tf_rip;
-	sp = tf->tf_rsp;
+	pc = rp->r_rip;
+	sp = rp->r_rsp;
 
 	if (DTRACE_CPUFLAG_ISSET(CPU_DTRACE_ENTRY)) {
 		*pcstack++ = (uint64_t)pc;
@@ -193,32 +210,8 @@
 int
 dtrace_getustackdepth(void)
 {
-	proc_t *p = curproc;
-	struct trapframe *tf;
-	uintptr_t pc, sp;
-	int n = 0;
-
-	if (p == NULL || (tf = curthread->td_frame) == NULL)
-		return (0);
-
-	if (DTRACE_CPUFLAG_ISSET(CPU_DTRACE_FAULT))
-		return (-1);
-
-	pc = tf->tf_rip;
-	sp = tf->tf_rsp;
-
-	if (DTRACE_CPUFLAG_ISSET(CPU_DTRACE_ENTRY)) {
-		n++;
-
-		pc = dtrace_fulword((void *) sp);
-	}
-
-	n += dtrace_getustack_common(NULL, 0, pc, sp);
-
-	return (n);
 }
 
-#ifdef notyet
 void
 dtrace_getufpstack(uint64_t *pcstack, uint64_t *fpstack, int pcstack_limit)
 {
@@ -227,7 +220,7 @@
 	struct regs *rp;
 	uintptr_t pc, sp, oldcontext;
 	volatile uint16_t *flags =
-	    (volatile uint16_t *)&cpu_core[curcpu].cpuc_dtrace_flags;
+	    (volatile uint16_t *)&cpu_core[cpu_number()].cpuc_dtrace_flags;
 	size_t s1, s2;
 
 	if (*flags & CPU_DTRACE_FAULT)
@@ -343,9 +336,9 @@
 			    sizeof (uintptr_t));
 
 			if (arg <= inreg) {
-				stack = (uintptr_t *)&rp->r_rdi;
+				stack = (uintptr_t *)&rp->regs[_REG_RDI];
 			} else {
-				stack = (uintptr_t *)(rp->r_rsp);
+				stack = (uintptr_t *)(rp->regs[_REG_RSP]);
 				arg -= inreg;
 			}
 			goto load;
@@ -404,7 +397,7 @@
 		depth++;
 		if (frame->f_frame <= frame ||
 		    (vm_offset_t)frame->f_frame >=
-		    (vm_offset_t)rbp + KSTACK_PAGES * PAGE_SIZE)
+		    (vm_offset_t)rbp + KSTACK_SIZE)
 			break;
 		frame = frame->f_frame;
 	}
@@ -528,7 +521,7 @@
 
 	if (uaddr + size > VM_MAXUSER_ADDRESS || uaddr + size < uaddr) {
 		DTRACE_CPUFLAG_SET(CPU_DTRACE_BADADDR);
-		cpu_core[curcpu].cpuc_dtrace_illval = uaddr;
+		cpu_core[cpu_number()].cpuc_dtrace_illval = uaddr;
 		return (0);
 	}
 
@@ -572,7 +565,7 @@
 {
 	if ((uintptr_t)uaddr > VM_MAXUSER_ADDRESS) {
 		DTRACE_CPUFLAG_SET(CPU_DTRACE_BADADDR);
-		cpu_core[curcpu].cpuc_dtrace_illval = (uintptr_t)uaddr;
+		cpu_core[cpu_number()].cpuc_dtrace_illval = (uintptr_t)uaddr;
 		return (0);
 	}
 	return (dtrace_fuword8_nocheck(uaddr));
@@ -583,7 +576,7 @@
 {
 	if ((uintptr_t)uaddr > VM_MAXUSER_ADDRESS) {
 		DTRACE_CPUFLAG_SET(CPU_DTRACE_BADADDR);
-		cpu_core[curcpu].cpuc_dtrace_illval = (uintptr_t)uaddr;
+		cpu_core[cpu_number()].cpuc_dtrace_illval = (uintptr_t)uaddr;
 		return (0);
 	}
 	return (dtrace_fuword16_nocheck(uaddr));
@@ -594,7 +587,7 @@
 {
 	if ((uintptr_t)uaddr > VM_MAXUSER_ADDRESS) {
 		DTRACE_CPUFLAG_SET(CPU_DTRACE_BADADDR);
-		cpu_core[curcpu].cpuc_dtrace_illval = (uintptr_t)uaddr;
+		cpu_core[cpu_number()].cpuc_dtrace_illval = (uintptr_t)uaddr;
 		return (0);
 	}
 	return (dtrace_fuword32_nocheck(uaddr));
@@ -605,7 +598,7 @@
 {
 	if ((uintptr_t)uaddr > VM_MAXUSER_ADDRESS) {
 		DTRACE_CPUFLAG_SET(CPU_DTRACE_BADADDR);
-		cpu_core[curcpu].cpuc_dtrace_illval = (uintptr_t)uaddr;
+		cpu_core[cpu_number()].cpuc_dtrace_illval = (uintptr_t)uaddr;
 		return (0);
 	}
 	return (dtrace_fuword64_nocheck(uaddr));
Index: src/external/cddl/osnet/dev/dtrace/amd64/dtrace_subr.c
diff -u src/external/cddl/osnet/dev/dtrace/amd64/dtrace_subr.c:1.2 src/external/cddl/osnet/dev/dtrace/amd64/dtrace_subr.c:1.3
--- src/external/cddl/osnet/dev/dtrace/amd64/dtrace_subr.c:1.2	Sat Feb 20 20:46:33 2010
+++ src/external/cddl/osnet/dev/dtrace/amd64/dtrace_subr.c	Sat Mar 13 17:31:15 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: dtrace_subr.c,v 1.2 2010/02/21 01:46:33 darran Exp $	*/
+/*	$NetBSD: dtrace_subr.c,v 1.3 2010/03/13 22:31:15 christos Exp $	*/
 
 /*
  * CDDL HEADER START
@@ -35,13 +35,19 @@
 #include <sys/kernel.h>
 #include <sys/malloc.h>
 #include <sys/kmem.h>
-#include <sys/smp.h>
+#include <sys/xcall.h>
+#include <sys/cpu.h>
+#include <sys/cpuvar.h>
+//#include <sys/smp.h>
 #include <sys/dtrace_impl.h>
 #include <sys/dtrace_bsd.h>
-#include <machine/clock.h>
 #include <machine/frame.h>
-#include <vm/pmap.h>
+#include <machine/cpu_counter.h>
+#include <uvm/uvm_pglist.h>
+#include <uvm/uvm_prot.h>
+#include <uvm/uvm_pmap.h>
 
+extern uintptr_t 	kernelbase;
 extern uintptr_t 	dtrace_in_probe_addr;
 extern int		dtrace_in_probe;
 
@@ -53,6 +59,8 @@
 } dtrace_invop_hdlr_t;
 
 dtrace_invop_hdlr_t *dtrace_invop_hdlr;
+void dtrace_gethrtime_init(void *);
+
 
 int
 dtrace_invop(uintptr_t addr, uintptr_t *stack, uintptr_t eax)
@@ -109,34 +117,35 @@
 void
 dtrace_toxic_ranges(void (*func)(uintptr_t base, uintptr_t limit))
 {
-	(*func)(0, (uintptr_t) addr_PTmap);
+	(*func)(0, kernelbase);
 }
 
-void
-dtrace_xcall(processorid_t cpu, dtrace_xcall_t func, void *arg)
+static void
+xcall_func(void *arg0, void *arg1)
 {
-	cpumask_t cpus;
+    	dtrace_xcall_t func = arg0;
 
-	critical_enter();
+    	(*func)(arg1);
+}
 
-	if (cpu == DTRACE_CPUALL)
-		cpus = all_cpus;
-	else
-		cpus = (cpumask_t) (1 << cpu);
+void
+dtrace_xcall(processorid_t cpu, dtrace_xcall_t func, void *arg)
+{
+	uint64_t where;
 
-	/* If the current CPU is in the set, call the function directly: */
-	if ((cpus & (1 << curcpu)) != 0) {
-		(*func)(arg);
+	if (cpu == DTRACE_CPUALL) {
+		where = xc_broadcast(0, xcall_func, func, arg);
+	} else {
+		struct cpu_info *cinfo = cpu_lookup(cpu);
 
-		/* Mask the current CPU from the set */
-		cpus &= ~(1 << curcpu);
+		KASSERT(cinfo != NULL);
+		where = xc_unicast(0, xcall_func, func, arg, cinfo);
 	}
+	xc_wait(where);
 
-	/* If there are any CPUs in the set, cross-call to those CPUs */
-	if (cpus != 0)
-		smp_rendezvous_cpus(cpus, NULL, func, smp_no_rendevous_barrier, arg);
-
-	critical_exit();
+	/* XXX Q. Do we really need the other cpus to wait also? 
+	 * (see solaris:xc_sync())
+	 */
 }
 
 static void
@@ -365,14 +374,17 @@
 }
 #endif
 
+#ifdef notyet
 static int64_t	tgt_cpu_tsc;
 static int64_t	hst_cpu_tsc;
-static int64_t	tsc_skew[MAXCPU];
+#endif
+static int64_t	tsc_skew[MAXCPUS];
 static uint64_t	nsec_scale;
 
 /* See below for the explanation of this macro. */
 #define SCALE_SHIFT	28
 
+#ifdef notyet
 static void
 dtrace_gethrtime_init_sync(void *arg)
 {
@@ -384,7 +396,7 @@
 	 */
 	uintptr_t cpu = (uintptr_t) arg;
 
-	if (cpu == curcpu) {
+	if (cpu == cpu_number()) {
 		int i;
 		for (i = 0; i < 1000000000; i++)
 			tgt_cpu_tsc = rdtsc();
@@ -398,18 +410,20 @@
 {
 	uintptr_t cpu = (uintptr_t) arg;
 
-	if (cpu == curcpu)
+	if (cpu == cpu_number())
 		tgt_cpu_tsc = rdtsc();
 	else
 		hst_cpu_tsc = rdtsc();
 }
+#endif
 
-static void
+void
 dtrace_gethrtime_init(void *arg)
 {
 	uint64_t tsc_f;
-	cpumask_t map;
-	int i;
+	CPU_INFO_ITERATOR cpuind;
+	struct cpu_info *cinfo = curcpu();
+	cpuid_t cur_cpuid = cpu_number();	/* current cpu id */
 
 	/*
 	 * Get TSC frequency known at this moment.
@@ -417,7 +431,7 @@
 	 * Otherwise tick->time conversion will be inaccurate, but
 	 * will preserve monotonic property of TSC.
 	 */
-	tsc_f = tsc_freq;
+	tsc_f = cpu_frequency(cinfo);
 
 	/*
 	 * The following line checks that nsec_scale calculated below
@@ -425,7 +439,8 @@
 	 * another 32-bit integer without overflowing 64-bit.
 	 * Thus minimum supported TSC frequency is 62.5MHz.
 	 */
-	KASSERT(tsc_f > (NANOSEC >> (32 - SCALE_SHIFT)), ("TSC frequency is too low"));
+	//KASSERT(tsc_f > (NANOSEC >> (32 - SCALE_SHIFT)), ("TSC frequency is too low"));
+	KASSERT(tsc_f > (NANOSEC >> (32 - SCALE_SHIFT)));
 
 	/*
 	 * We scale up NANOSEC/tsc_f ratio to preserve as much precision
@@ -439,8 +454,15 @@
 	nsec_scale = ((uint64_t)NANOSEC << SCALE_SHIFT) / tsc_f;
 
 	/* The current CPU is the reference one. */
-	tsc_skew[curcpu] = 0;
+	tsc_skew[cur_cpuid] = 0;
+
+	for (CPU_INFO_FOREACH(cpuind, cinfo)) {
+		/* use skew relative to cpu 0 */
+		tsc_skew[cpu_index(cinfo)] = cinfo->ci_data.cpu_cc_skew;
+	}
 
+	/* Already handled in x86/tsc.c for ci_data.cpu_cc_skew */
+#if 0
 	for (i = 0; i <= mp_maxid; i++) {
 		if (i == curcpu)
 			continue;
@@ -458,10 +480,9 @@
 
 		tsc_skew[i] = tgt_cpu_tsc - hst_cpu_tsc;
 	}
+#endif
 }
 
-SYSINIT(dtrace_gethrtime_init, SI_SUB_SMP, SI_ORDER_ANY, dtrace_gethrtime_init, NULL);
-
 /*
  * DTrace needs a high resolution time function which can
  * be called from a probe context and guaranteed not to have
@@ -482,7 +503,7 @@
 	 * (see nsec_scale calculations) taking into account 32-bit shift of
 	 * the higher half and finally add.
 	 */
-	tsc = rdtsc() + tsc_skew[curcpu];
+	tsc = rdtsc() + tsc_skew[cpu_number()];
 	lo = tsc;
 	hi = tsc >> 32;
 	return (((lo * nsec_scale) >> SCALE_SHIFT) +
@@ -510,7 +531,7 @@
 	 * Check if DTrace has enabled 'no-fault' mode:
 	 *
 	 */
-	if ((cpu_core[curcpu].cpuc_dtrace_flags & CPU_DTRACE_NOFAULT) != 0) {
+	if ((cpu_core[cpu_number()].cpuc_dtrace_flags & CPU_DTRACE_NOFAULT) != 0) {
 		/*
 		 * There are only a couple of trap types that are expected.
 		 * All the rest will be handled in the usual way.
@@ -522,7 +543,7 @@
 		/* General protection fault. */
 		case T_PROTFLT:
 			/* Flag an illegal operation. */
-			cpu_core[curcpu].cpuc_dtrace_flags |= CPU_DTRACE_ILLOP;
+			cpu_core[cpu_number()].cpuc_dtrace_flags |= CPU_DTRACE_ILLOP;
 
 			/*
 			 * Offset the instruction pointer to the instruction
@@ -533,8 +554,8 @@
 		/* Page fault. */
 		case T_PAGEFLT:
 			/* Flag a bad address. */
-			cpu_core[curcpu].cpuc_dtrace_flags |= CPU_DTRACE_BADADDR;
-			cpu_core[curcpu].cpuc_dtrace_illval = frame->tf_addr;
+			cpu_core[cpu_number()].cpuc_dtrace_flags |= CPU_DTRACE_BADADDR;
+			cpu_core[cpu_number()].cpuc_dtrace_illval = rcr2();
 
 			/*
 			 * Offset the instruction pointer to the instruction

Index: src/external/cddl/osnet/dev/dtrace/i386/dtrace_asm.S
diff -u src/external/cddl/osnet/dev/dtrace/i386/dtrace_asm.S:1.2 src/external/cddl/osnet/dev/dtrace/i386/dtrace_asm.S:1.3
--- src/external/cddl/osnet/dev/dtrace/i386/dtrace_asm.S:1.2	Sat Feb 20 20:46:33 2010
+++ src/external/cddl/osnet/dev/dtrace/i386/dtrace_asm.S	Sat Mar 13 17:31:15 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: dtrace_asm.S,v 1.2 2010/02/21 01:46:33 darran Exp $	*/
+/*	$NetBSD: dtrace_asm.S,v 1.3 2010/03/13 22:31:15 christos Exp $	*/
 
 /*
  * CDDL HEADER START
@@ -33,6 +33,7 @@
 #include <sys/cpuvar_defs.h>
 #include <sys/dtrace.h>
 #include <machine/asm.h>
+#include <machine/frameasm.h>
 
 	ENTRY(dtrace_invop_start)
 

Index: src/external/cddl/osnet/dev/fbt/fbt.c
diff -u src/external/cddl/osnet/dev/fbt/fbt.c:1.4 src/external/cddl/osnet/dev/fbt/fbt.c:1.5
--- src/external/cddl/osnet/dev/fbt/fbt.c:1.4	Fri Mar 12 20:10:01 2010
+++ src/external/cddl/osnet/dev/fbt/fbt.c	Sat Mar 13 17:31:15 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: fbt.c,v 1.4 2010/03/13 01:10:01 darran Exp $	*/
+/*	$NetBSD: fbt.c,v 1.5 2010/03/13 22:31:15 christos Exp $	*/
 
 /*
  * CDDL HEADER START
@@ -41,6 +41,7 @@
 #include <sys/filio.h>
 #include <sys/kernel.h>
 #include <sys/kmem.h>
+#include <sys/ksyms.h>
 #include <sys/cpu.h>
 #include <sys/kthread.h>
 #include <sys/limits.h>
@@ -154,12 +155,14 @@
 	struct fbt_probe *fbtp_next;
 } fbt_probe_t;
 
+#ifdef notyet
 static struct cdev		*fbt_cdev;
+static int			fbt_verbose = 0;
+#endif
 static dtrace_provider_id_t	fbt_id;
 static fbt_probe_t		**fbt_probetab;
 static int			fbt_probetab_size;
 static int			fbt_probetab_mask;
-static int			fbt_verbose = 0;
 
 static void
 fbt_doubletrap(void)
@@ -244,7 +247,6 @@
 	dtrace_modctl_t *mod = opaque;
 	const char *modname = mod->mod_info->mi_name;
 	int j;
-	int ind;
 	int size;
 
 	/* got a function? */
@@ -523,7 +525,9 @@
 fbt_enable(void *arg, dtrace_id_t id, void *parg)
 {
 	fbt_probe_t *fbt = parg;
+#if 0
 	dtrace_modctl_t *ctl = fbt->fbtp_ctl;
+#endif
 	u_long psl;
 	u_long cr0;
 
@@ -574,7 +578,9 @@
 fbt_disable(void *arg, dtrace_id_t id, void *parg)
 {
 	fbt_probe_t *fbt = parg;
+#if 0
 	dtrace_modctl_t *ctl = fbt->fbtp_ctl;
+#endif
 	u_long psl;
 	u_long cr0;
 
@@ -609,7 +615,9 @@
 fbt_suspend(void *arg, dtrace_id_t id, void *parg)
 {
 	fbt_probe_t *fbt = parg;
+#if 0
 	dtrace_modctl_t *ctl = fbt->fbtp_ctl;
+#endif
 	u_long psl;
 	u_long cr0;
 
@@ -644,7 +652,9 @@
 fbt_resume(void *arg, dtrace_id_t id, void *parg)
 {
 	fbt_probe_t *fbt = parg;
+#if 0
 	dtrace_modctl_t *ctl = fbt->fbtp_ctl;
+#endif
 	u_long psl;
 	u_long cr0;
 
@@ -1505,7 +1515,6 @@
 fbt_modcmd(modcmd_t cmd, void *data)
 {
 	int bmajor = -1, cmajor = -1;
-	int error = 0;
 
 	switch (cmd) {
 	case MODULE_CMD_INIT:

Index: src/external/cddl/osnet/dev/sdt/sdt.c
diff -u src/external/cddl/osnet/dev/sdt/sdt.c:1.5 src/external/cddl/osnet/dev/sdt/sdt.c:1.6
--- src/external/cddl/osnet/dev/sdt/sdt.c:1.5	Thu Mar  4 21:21:41 2010
+++ src/external/cddl/osnet/dev/sdt/sdt.c	Sat Mar 13 17:31:15 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: sdt.c,v 1.5 2010/03/05 02:21:41 darran Exp $	*/
+/*	$NetBSD: sdt.c,v 1.6 2010/03/13 22:31:15 christos Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -40,6 +40,7 @@
 #include <sys/systm.h>
 #include <sys/conf.h>
 #include <sys/kernel.h>
+#include <sys/kmem.h>
 #include <sys/module.h>
 #include <sys/mutex.h>
 
@@ -79,7 +80,9 @@
 	sdt_destroy
 };
 
+#ifdef notyet
 static struct cdev		*sdt_cdev;
+#endif
 
 /*
  * Provider and probe definitions 
@@ -144,10 +147,7 @@
 static void
 sdt_getargdesc(void *arg, dtrace_id_t id, void *parg, dtrace_argdesc_t *desc)
 {
-    	sdt_provider_t *sprov = arg;
 	sdt_probe_t *sprobe = parg;
-	int res;
-	int ind;
 
 #ifdef SDT_DEBUG
 	printf("sdt: %s probe %d\n", __func__, id);
@@ -381,7 +381,6 @@
 sdt_load(void *dummy)
 {
     	int ind;
-	int res;
 
 #ifdef SDT_DEBUG
 	printf("sdt: %s\n", __func__);
@@ -389,8 +388,8 @@
 
 	sdt_init(dtrace_probe);
 
-	sdt_list = (sdt_provider_t **)kmem_alloc(
-			    sizeof(sdt_provider_t *) * SDT_MAX_PROVIDER);
+	sdt_list = kmem_alloc(sizeof(sdt_provider_t *) * SDT_MAX_PROVIDER,
+	    KM_SLEEP);
 
 	mutex_init(&sdt_mutex, "sdt_mutex", MUTEX_DEFAULT, NULL);
 
@@ -454,7 +453,6 @@
 sdt_modcmd(modcmd_t cmd, void *data)
 {
 	int bmajor = -1, cmajor = -1;
-	int error = 0;
 
 	switch (cmd) {
 	case MODULE_CMD_INIT:

Index: src/external/cddl/osnet/dist/uts/common/dtrace/dtrace.c
diff -u src/external/cddl/osnet/dist/uts/common/dtrace/dtrace.c:1.9 src/external/cddl/osnet/dist/uts/common/dtrace/dtrace.c:1.10
--- src/external/cddl/osnet/dist/uts/common/dtrace/dtrace.c:1.9	Fri Mar 12 16:53:16 2010
+++ src/external/cddl/osnet/dist/uts/common/dtrace/dtrace.c	Sat Mar 13 17:31:15 2010
@@ -26,7 +26,7 @@
  * Use is subject to license terms.
  */
 
-#pragma ident	"%Z%%M%	%I%	%E% SMI"
+/* #pragma ident	"%Z%%M%	%I%	%E% SMI" */
 
 /*
  * DTrace - Dynamic Tracing for Solaris
@@ -1209,7 +1209,7 @@
 	    gid_t gid;
 
 	    uid = kauth_cred_getuid(s_cr);
-	    uid = kauth_cred_getgid(s_cr);
+	    gid = kauth_cred_getgid(s_cr);
 
 		if (uid == kauth_cred_getuid(cr) &&
 		    uid == kauth_cred_geteuid(cr) &&
@@ -2737,6 +2737,7 @@
 	return (ret);
 }
 
+#ifdef notyet
 /*
  * Return a string from a memoy address which is known to have one or
  * more concatenated, individually zero terminated, sub-strings.
@@ -2774,6 +2775,7 @@
 	mstate->dtms_scratch_ptr += strsz;
 	return (ret);
 }
+#endif
 
 /*
  * This function implements the DIF emulator's variable lookups.  The emulator
@@ -10773,7 +10775,6 @@
 
 	return (ENOMEM);
 #else
-	int i;
 
 #if defined(__amd64__)
 	/*
@@ -11788,12 +11789,12 @@
 static dof_hdr_t *
 dtrace_dof_property(const char *name)
 {
+	dof_hdr_t *dof = NULL;
+#if defined(sun)
 	uchar_t *buf;
 	uint64_t loadsz;
 	unsigned int len, i;
-	dof_hdr_t *dof = NULL;
 
-#if defined(sun)
 	/*
 	 * Unfortunately, array of values in .conf files are always (and
 	 * only) interpreted to be integer arrays.  We must read our DOF
@@ -13500,7 +13501,7 @@
 	if ((rval = kthread_create(PRI_BIO, KTHREAD_MPSAFE,
 			    NULL, dtrace_state_deadman, state,
 			    &dtrace_deadman_proc, "dtrace_deadman")) != 0) {
-		printf("failed to create deadman thread %s, error=%d\n", rval);
+		printf("failed to create deadman thread, error=%d\n", rval);
 		goto out;
 	}
 #endif

Index: src/external/cddl/osnet/dist/uts/common/sys/ccompile.h
diff -u src/external/cddl/osnet/dist/uts/common/sys/ccompile.h:1.1.1.1 src/external/cddl/osnet/dist/uts/common/sys/ccompile.h:1.2
--- src/external/cddl/osnet/dist/uts/common/sys/ccompile.h:1.1.1.1	Fri Aug  7 14:33:47 2009
+++ src/external/cddl/osnet/dist/uts/common/sys/ccompile.h	Sat Mar 13 17:31:15 2010
@@ -27,7 +27,7 @@
 #ifndef	_SYS_CCOMPILE_H
 #define	_SYS_CCOMPILE_H
 
-#pragma ident	"%Z%%M%	%I%	%E% SMI"
+/* #pragma ident	"%Z%%M%	%I%	%E% SMI" */
 
 /*
  * This file contains definitions designed to enable different compilers

Index: src/external/cddl/osnet/dist/uts/common/sys/ctf_api.h
diff -u src/external/cddl/osnet/dist/uts/common/sys/ctf_api.h:1.2 src/external/cddl/osnet/dist/uts/common/sys/ctf_api.h:1.3
--- src/external/cddl/osnet/dist/uts/common/sys/ctf_api.h:1.2	Sat Feb 20 19:49:56 2010
+++ src/external/cddl/osnet/dist/uts/common/sys/ctf_api.h	Sat Mar 13 17:31:15 2010
@@ -40,7 +40,7 @@
 #ifndef	_CTF_API_H
 #define	_CTF_API_H
 
-#pragma ident	"%Z%%M%	%I%	%E% SMI"
+/* #pragma ident	"%Z%%M%	%I%	%E% SMI" */
 
 #include <sys/types.h>
 #include <sys/param.h>

Index: src/external/cddl/osnet/dist/uts/common/sys/dtrace_impl.h
diff -u src/external/cddl/osnet/dist/uts/common/sys/dtrace_impl.h:1.3 src/external/cddl/osnet/dist/uts/common/sys/dtrace_impl.h:1.4
--- src/external/cddl/osnet/dist/uts/common/sys/dtrace_impl.h:1.3	Sat Feb 20 20:46:34 2010
+++ src/external/cddl/osnet/dist/uts/common/sys/dtrace_impl.h	Sat Mar 13 17:31:15 2010
@@ -29,7 +29,7 @@
 #ifndef _SYS_DTRACE_IMPL_H
 #define	_SYS_DTRACE_IMPL_H
 
-#pragma ident	"%Z%%M%	%I%	%E% SMI"
+/* #pragma ident	"%Z%%M%	%I%	%E% SMI" */
 
 #ifdef	__cplusplus
 extern "C" {

Index: src/external/cddl/osnet/dist/uts/common/sys/processor.h
diff -u src/external/cddl/osnet/dist/uts/common/sys/processor.h:1.4 src/external/cddl/osnet/dist/uts/common/sys/processor.h:1.5
--- src/external/cddl/osnet/dist/uts/common/sys/processor.h:1.4	Mon Mar  1 17:20:15 2010
+++ src/external/cddl/osnet/dist/uts/common/sys/processor.h	Sat Mar 13 17:31:15 2010
@@ -32,7 +32,7 @@
 #ifndef _SYS_PROCESSOR_H
 #define	_SYS_PROCESSOR_H
 
-#pragma ident	"%Z%%M%	%I%	%E% SMI"
+/* #pragma ident	"%Z%%M%	%I%	%E% SMI" */
 
 #include <sys/types.h>
 #include <sys/procset.h>

Index: src/external/cddl/osnet/sys/sys/cpuvar.h
diff -u src/external/cddl/osnet/sys/sys/cpuvar.h:1.6 src/external/cddl/osnet/sys/sys/cpuvar.h:1.7
--- src/external/cddl/osnet/sys/sys/cpuvar.h:1.6	Fri Mar 12 16:37:37 2010
+++ src/external/cddl/osnet/sys/sys/cpuvar.h	Sat Mar 13 17:31:15 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: cpuvar.h,v 1.6 2010/03/12 21:37:37 darran Exp $	*/
+/*	$NetBSD: cpuvar.h,v 1.7 2010/03/13 22:31:15 christos Exp $	*/
 
 /*
  * CDDL HEADER START
@@ -153,6 +153,7 @@
 } cpu_setup_t;
 
 typedef int cpu_setup_func_t(cpu_setup_t, int, void *);
+#define mp_maxid ncpu
 
 
 #endif /* _COMPAT_OPENSOLARIS_SYS_CPUVAR_H */

Index: src/external/cddl/osnet/sys/sys/cred.h
diff -u src/external/cddl/osnet/sys/sys/cred.h:1.3 src/external/cddl/osnet/sys/sys/cred.h:1.4
--- src/external/cddl/osnet/sys/sys/cred.h:1.3	Sat Feb 20 20:46:35 2010
+++ src/external/cddl/osnet/sys/sys/cred.h	Sat Mar 13 17:31:15 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: cred.h,v 1.3 2010/02/21 01:46:35 darran Exp $	*/
+/*	$NetBSD: cred.h,v 1.4 2010/03/13 22:31:15 christos Exp $	*/
 
 /*-
  * Copyright (c) 2007 Pawel Jakub Dawidek <p...@freebsd.org>
@@ -72,7 +72,7 @@
 	return gids;
 }
 
-static int
+static __inline int
 groupmember(gid_t gid, cred_t *cr) 
 {
   int result;

Index: src/external/cddl/osnet/sys/sys/proc.h
diff -u src/external/cddl/osnet/sys/sys/proc.h:1.4 src/external/cddl/osnet/sys/sys/proc.h:1.5
--- src/external/cddl/osnet/sys/sys/proc.h:1.4	Sun Feb 28 09:45:47 2010
+++ src/external/cddl/osnet/sys/sys/proc.h	Sat Mar 13 17:31:15 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: proc.h,v 1.4 2010/02/28 14:45:47 haad Exp $	*/
+/*	$NetBSD: proc.h,v 1.5 2010/03/13 22:31:15 christos Exp $	*/
 
 /*-
  * Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -94,12 +94,12 @@
 struct contract {
 };
 
-kthread_t *thread_create(void *, size_t, void (*)(), void *, size_t,
+kthread_t *thread_create(void *, size_t, void (*)(void *), void *, size_t,
 			 proc_t *, int, pri_t);
 void	thread_exit(void);
 void	thread_join(uint64_t);
 
-int newproc(void (*)(), caddr_t, id_t, int, struct contract **, pid_t);
+int newproc(void (*)(void *), caddr_t, id_t, int, struct contract **, pid_t);
 
 #endif	/* _KERNEL */
 

Reply via email to