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))