Module Name:    src
Committed By:   chs
Date:           Mon Jun 11 15:18:05 UTC 2012

Modified Files:
        src/external/cddl/osnet/dev/dtrace/amd64: dtrace_asm.S dtrace_isa.c
            dtrace_subr.c
        src/sys/arch/amd64/amd64: genassym.cf
        src/sys/arch/amd64/include: Makefile.inc asm.h

Log Message:
make dtrace work on amd64.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 \
    src/external/cddl/osnet/dev/dtrace/amd64/dtrace_asm.S \
    src/external/cddl/osnet/dev/dtrace/amd64/dtrace_isa.c
cvs rdiff -u -r1.5 -r1.6 \
    src/external/cddl/osnet/dev/dtrace/amd64/dtrace_subr.c
cvs rdiff -u -r1.50 -r1.51 src/sys/arch/amd64/amd64/genassym.cf
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/amd64/include/Makefile.inc
cvs rdiff -u -r1.14 -r1.15 src/sys/arch/amd64/include/asm.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/amd64/dtrace_asm.S
diff -u src/external/cddl/osnet/dev/dtrace/amd64/dtrace_asm.S:1.3 src/external/cddl/osnet/dev/dtrace/amd64/dtrace_asm.S:1.4
--- src/external/cddl/osnet/dev/dtrace/amd64/dtrace_asm.S:1.3	Sat Mar 13 22:31:15 2010
+++ src/external/cddl/osnet/dev/dtrace/amd64/dtrace_asm.S	Mon Jun 11 15:18:05 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: dtrace_asm.S,v 1.3 2010/03/13 22:31:15 christos Exp $	*/
+/*	$NetBSD: dtrace_asm.S,v 1.4 2012/06/11 15:18:05 chs Exp $	*/
 
 /*
  * CDDL HEADER START
@@ -32,7 +32,6 @@
 
 #define _ASM
 
-
 #include <sys/cpuvar_defs.h>
 #include <sys/dtrace.h>
 #include <machine/asm.h>
@@ -65,8 +64,6 @@
 1:	addq	$TF_RIP,%rsp;
 
 
-	.globl	calltrap
-	.type	calltrap,@function
 	ENTRY(dtrace_invop_start)
 
 	/*
@@ -81,7 +78,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
@@ -147,7 +144,7 @@ bp_nop:
 	/*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.3 src/external/cddl/osnet/dev/dtrace/amd64/dtrace_isa.c:1.4
--- src/external/cddl/osnet/dev/dtrace/amd64/dtrace_isa.c:1.3	Sat Mar 13 22:31:15 2010
+++ src/external/cddl/osnet/dev/dtrace/amd64/dtrace_isa.c	Mon Jun 11 15:18:05 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: dtrace_isa.c,v 1.3 2010/03/13 22:31:15 christos Exp $	*/
+/*	$NetBSD: dtrace_isa.c,v 1.4 2012/06/11 15:18:05 chs Exp $	*/
 
 /*
  * CDDL HEADER START
@@ -52,15 +52,14 @@ uint16_t dtrace_fuword16_nocheck(void *)
 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)
+uintptr_t kernelbase = (uintptr_t)KERN_BASE;
+
+#define INKERNEL(va) ((intptr_t)(va) < 0)
 
 struct amd64_frame {     
 	struct amd64_frame	*f_frame;
-	int			 f_retaddr; 
-	int			 f_arg0;
+	uintptr_t		 f_retaddr; 
+	uintptr_t		 f_arg0;
 };
 
 typedef unsigned long vm_offset_t;

Index: src/external/cddl/osnet/dev/dtrace/amd64/dtrace_subr.c
diff -u src/external/cddl/osnet/dev/dtrace/amd64/dtrace_subr.c:1.5 src/external/cddl/osnet/dev/dtrace/amd64/dtrace_subr.c:1.6
--- src/external/cddl/osnet/dev/dtrace/amd64/dtrace_subr.c:1.5	Wed Aug 31 21:57:16 2011
+++ src/external/cddl/osnet/dev/dtrace/amd64/dtrace_subr.c	Mon Jun 11 15:18:05 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: dtrace_subr.c,v 1.5 2011/08/31 21:57:16 christos Exp $	*/
+/*	$NetBSD: dtrace_subr.c,v 1.6 2012/06/11 15:18:05 chs Exp $	*/
 
 /*
  * CDDL HEADER START
@@ -374,6 +374,18 @@ dtrace_safe_defer_signal(void)
 }
 #endif
 
+#ifdef __NetBSD__
+static __inline uint64_t
+dtrace_rdtsc(void)
+{
+	uint32_t hi, lo;
+
+	__asm volatile("rdtsc" : "=d" (hi), "=a" (lo));
+	return (((uint64_t)hi << 32) | (uint64_t) lo);
+}
+#define rdtsc dtrace_rdtsc
+#endif
+
 #ifdef notyet
 static int64_t	tgt_cpu_tsc;
 static int64_t	hst_cpu_tsc;

Index: src/sys/arch/amd64/amd64/genassym.cf
diff -u src/sys/arch/amd64/amd64/genassym.cf:1.50 src/sys/arch/amd64/amd64/genassym.cf:1.51
--- src/sys/arch/amd64/amd64/genassym.cf:1.50	Fri Apr 20 22:23:24 2012
+++ src/sys/arch/amd64/amd64/genassym.cf	Mon Jun 11 15:18:05 2012
@@ -1,4 +1,4 @@
-#	$NetBSD: genassym.cf,v 1.50 2012/04/20 22:23:24 rmind Exp $
+#	$NetBSD: genassym.cf,v 1.51 2012/06/11 15:18:05 chs Exp $
 
 #
 # Copyright (c) 1998, 2006, 2007, 2008 The NetBSD Foundation, Inc.
@@ -372,3 +372,5 @@ define	PGSHIFT			PGSHIFT
 define	VM_MIN_KERNEL_ADDRESS_HIGH32	(VM_MIN_KERNEL_ADDRESS >> 32)
 
 define	RESCHED_KPREEMPT	RESCHED_KPREEMPT
+
+define	SEL_RPL_MASK		SEL_RPL

Index: src/sys/arch/amd64/include/Makefile.inc
diff -u src/sys/arch/amd64/include/Makefile.inc:1.3 src/sys/arch/amd64/include/Makefile.inc:1.4
--- src/sys/arch/amd64/include/Makefile.inc:1.3	Fri Nov 27 13:50:29 2009
+++ src/sys/arch/amd64/include/Makefile.inc	Mon Jun 11 15:18:05 2012
@@ -1,10 +1,10 @@
-# $NetBSD: Makefile.inc,v 1.3 2009/11/27 13:50:29 pooka Exp $
+# $NetBSD: Makefile.inc,v 1.4 2012/06/11 15:18:05 chs Exp $
 
 CFLAGS+=	-mno-red-zone
 
 # this should really be !(RUMPKERNEL && PIC)
 .if !defined(RUMPKERNEL)
-CFLAGS+=	-mcmodel=kernel
+CFLAGS+=	-mcmodel=kernel -fno-omit-frame-pointer
 .endif
 
 USE_SSP?=	yes

Index: src/sys/arch/amd64/include/asm.h
diff -u src/sys/arch/amd64/include/asm.h:1.14 src/sys/arch/amd64/include/asm.h:1.15
--- src/sys/arch/amd64/include/asm.h:1.14	Mon Dec 20 21:11:24 2010
+++ src/sys/arch/amd64/include/asm.h	Mon Jun 11 15:18:05 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: asm.h,v 1.14 2010/12/20 21:11:24 joerg Exp $	*/
+/*	$NetBSD: asm.h,v 1.15 2012/06/11 15:18:05 chs Exp $	*/
 
 /*-
  * Copyright (c) 1990 The Regents of the University of California.
@@ -101,6 +101,7 @@
 
 #define	ENTRY(y)	_ENTRY(_C_LABEL(y)); _PROF_PROLOGUE
 #define	NENTRY(y)	_ENTRY(_C_LABEL(y))
+#define	ALTENTRY(x)	NENTRY(x)
 #define	ASENTRY(y)	_ENTRY(_ASM_LABEL(y)); _PROF_PROLOGUE
 #define	LABEL(y)	_LABEL(_C_LABEL(y))
 

Reply via email to