Module Name:    src
Committed By:   maxv
Date:           Sat Sep  7 18:56:01 UTC 2019

Modified Files:
        src/sys/arch/amd64/amd64: cpufunc.S
        src/sys/arch/amd64/conf: Makefile.amd64 files.amd64
        src/sys/arch/xen/conf: files.xen
Removed Files:
        src/sys/arch/amd64/amd64: amd64func.S

Log Message:
Merge amd64func.S into cpufunc.S, and clean up.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r0 src/sys/arch/amd64/amd64/amd64func.S
cvs rdiff -u -r1.44 -r1.45 src/sys/arch/amd64/amd64/cpufunc.S
cvs rdiff -u -r1.77 -r1.78 src/sys/arch/amd64/conf/Makefile.amd64
cvs rdiff -u -r1.112 -r1.113 src/sys/arch/amd64/conf/files.amd64
cvs rdiff -u -r1.178 -r1.179 src/sys/arch/xen/conf/files.xen

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

Modified files:

Index: src/sys/arch/amd64/amd64/cpufunc.S
diff -u src/sys/arch/amd64/amd64/cpufunc.S:1.44 src/sys/arch/amd64/amd64/cpufunc.S:1.45
--- src/sys/arch/amd64/amd64/cpufunc.S:1.44	Sat Sep  7 18:33:16 2019
+++ src/sys/arch/amd64/amd64/cpufunc.S	Sat Sep  7 18:56:01 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: cpufunc.S,v 1.44 2019/09/07 18:33:16 maxv Exp $	*/
+/*	$NetBSD: cpufunc.S,v 1.45 2019/09/07 18:56:01 maxv Exp $	*/
 
 /*
  * Copyright (c) 1998, 2007, 2008 The NetBSD Foundation, Inc.
@@ -29,10 +29,6 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- * Functions to provide access to i386-specific instructions.
- */
-
 #include <sys/errno.h>
 
 #include <machine/asm.h>
@@ -81,6 +77,16 @@ ENTRY(invlpg)
 	ret
 END(invlpg)
 
+ENTRY(lgdt)
+	/* Reload the descriptor table. */
+	movq	%rdi,%rax
+	lgdt	(%rax)
+	/* Flush the prefetch queue. */
+	jmp	1f
+	nop
+1:	jmp	_C_LABEL(lgdt_finish)
+END(lgdt)
+
 ENTRY(lidt)
 	lidt	(%rdi)
 	ret
@@ -100,27 +106,7 @@ ENTRY(ltr)
 	ltr	%di
 	ret
 END(ltr)
-#endif
 
-/*
- * Big hammer: flush all TLB entries, including ones from PTE's
- * with the G bit set.  This should only be necessary if TLB
- * shootdown falls far behind.
- *
- * Intel Architecture Software Developer's Manual, Volume 3,
- *	System Programming, section 9.10, "Invalidating the
- * Translation Lookaside Buffers (TLBS)":
- * "The following operations invalidate all TLB entries, irrespective
- * of the setting of the G flag:
- * ...
- * "(P6 family processors only): Writing to control register CR4 to
- * modify the PSE, PGE, or PAE flag."
- *
- * (the alternatives not quoted above are not an option here.)
- *
- * If PGE is not in use, we reload CR3.
- */
-#ifndef XENPV
 ENTRY(tlbflushg)
 	movq	%cr4, %rax
 	testq	$CR4_PGE, %rax
@@ -150,6 +136,20 @@ ENTRY(tlbflush)
 	ret
 END(tlbflush)
 
+ENTRY(wbinvd)
+	wbinvd
+	ret
+END(wbinvd)
+
+ENTRY(setusergs)
+	CLI(ax)
+	swapgs
+	movw	%di, %gs
+	swapgs
+	STI(ax)
+	ret
+END(setusergs)
+
 ENTRY(x86_read_flags)
 	pushfq
 	popq	%rax
@@ -165,33 +165,38 @@ ENTRY(x86_write_flags)
 END(x86_write_flags)
 
 STRONG_ALIAS(x86_write_psl,x86_write_flags)
-#endif /* XENPV */
 
-/*
- * Support for reading MSRs in the safe manner (returns EFAULT on fault)
- */
-/* int rdmsr_safe(u_int msr, uint64_t *data) */
+ENTRY(tsc_get_timecount)
+	movq	CPUVAR(CURLWP), %rcx
+1:
+	movq	L_NCSW(%rcx), %rdi
+	rdtsc
+	addl	CPUVAR(CC_SKEW), %eax
+	cmpq	%rdi, L_NCSW(%rcx)
+	jne	2f
+	ret
+2:
+	jmp	1b
+END(tsc_get_timecount)
+#endif /* !XENPV */
+
 ENTRY(rdmsr_safe)
 	movq	CPUVAR(CURLWP), %r8
 	movq	L_PCB(%r8), %r8
 	movq	$_C_LABEL(msr_onfault), PCB_ONFAULT(%r8)
 
-	movl	%edi, %ecx /* u_int msr */
-	rdmsr			/* Read MSR pointed by %ecx. Returns
-				   hi byte in edx, lo in %eax */
-	salq	$32, %rdx	/* sign-shift %rdx left */
+	movl	%edi, %ecx
+	rdmsr
+	salq	$32, %rdx
 	movl	%eax, %eax	/* zero-extend %eax -> %rax */
 	orq	%rdx, %rax
-	movq	%rax, (%rsi)  /* *data */
-	xorq	%rax, %rax    /* "no error" */
+	movq	%rax, (%rsi)
 
+	xorq	%rax, %rax
 	movq	%rax, PCB_ONFAULT(%r8)
 	ret
 END(rdmsr_safe)
 
-/*
- * MSR operations fault handler
- */
 ENTRY(msr_onfault)
 	movq	CPUVAR(CURLWP), %r8
 	movq	L_PCB(%r8), %r8
@@ -200,13 +205,6 @@ ENTRY(msr_onfault)
 	ret
 END(msr_onfault)
 
-#ifndef XENPV
-ENTRY(wbinvd)
-	wbinvd
-	ret
-END(wbinvd)
-#endif
-
 ENTRY(cpu_counter)
 	xorq	%rax, %rax
 	rdtsc
@@ -258,28 +256,7 @@ ENTRY(__byte_swap_u16_variable)
 END(__byte_swap_u16_variable)
 
 /*
- * void lgdt(struct region_descriptor *rdp);
- *
- * Load a new GDT pointer (and do any necessary cleanup).
- * XXX It's somewhat questionable whether reloading all the segment registers
- * is necessary, since the actual descriptor data is not changed except by
- * process creation and exit, both of which clean up via task switches.
- */
-#ifndef XENPV
-ENTRY(lgdt)
-	/* Reload the descriptor table. */
-	movq	%rdi,%rax
-	lgdt	(%rax)
-	/* Flush the prefetch q. */
-	jmp	1f
-	nop
-1:	jmp	_C_LABEL(lgdt_finish)
-END(lgdt)
-#endif
-
-/*
- * void lgdt_finish(void);
- * Reload segments after a GDT change
+ * Reload segments after a GDT change.
  */
 ENTRY(lgdt_finish)
 	movl	$GSEL(GDATA_SEL, SEL_KPL),%eax
@@ -290,8 +267,6 @@ ENTRY(lgdt_finish)
 END(lgdt_finish)
 
 /*
- * void x86_flush()
- *
  * Flush instruction pipelines by doing an intersegment (far) return.
  */
 ENTRY(x86_flush)
@@ -487,14 +462,3 @@ ENTRY(outsl)
 	outsl
 	ret
 END(outsl)
-
-#ifndef XENPV
-ENTRY(setusergs)
-	CLI(ax)
-	swapgs
-	movw	%di, %gs
-	swapgs
-	STI(ax)
-	ret
-END(setusergs)
-#endif

Index: src/sys/arch/amd64/conf/Makefile.amd64
diff -u src/sys/arch/amd64/conf/Makefile.amd64:1.77 src/sys/arch/amd64/conf/Makefile.amd64:1.78
--- src/sys/arch/amd64/conf/Makefile.amd64:1.77	Wed May 22 08:31:25 2019
+++ src/sys/arch/amd64/conf/Makefile.amd64	Sat Sep  7 18:56:01 2019
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.amd64,v 1.77 2019/05/22 08:31:25 kamil Exp $
+#	$NetBSD: Makefile.amd64,v 1.78 2019/09/07 18:56:01 maxv Exp $
 
 # Makefile for NetBSD
 #
@@ -89,7 +89,7 @@ LINKFLAGS_NORMAL=	-X
 # depend on CPU configuration
 locore.o machdep.o: Makefile
 
-acpi_wakeup_low.o amd64func.o busfunc.o cpufunc.o cpu_in_cksum.o: assym.h
+acpi_wakeup_low.o busfunc.o cpufunc.o cpu_in_cksum.o: assym.h
 linux_sigcode.o linux32_sigcode.o lock_stubs.o mptramp.o: assym.h
 netbsd32_sigcode.o: assym.h
 

Index: src/sys/arch/amd64/conf/files.amd64
diff -u src/sys/arch/amd64/conf/files.amd64:1.112 src/sys/arch/amd64/conf/files.amd64:1.113
--- src/sys/arch/amd64/conf/files.amd64:1.112	Fri Feb 15 08:54:01 2019
+++ src/sys/arch/amd64/conf/files.amd64	Sat Sep  7 18:56:01 2019
@@ -1,4 +1,4 @@
-#	$NetBSD: files.amd64,v 1.112 2019/02/15 08:54:01 nonaka Exp $
+#	$NetBSD: files.amd64,v 1.113 2019/09/07 18:56:01 maxv Exp $
 #
 # new style config file for amd64 architecture
 #
@@ -36,7 +36,6 @@ file	arch/amd64/amd64/vector.S		machdep
 file	arch/amd64/amd64/copy.S			machdep
 file	arch/amd64/amd64/spl.S			machdep
 
-file	arch/amd64/amd64/amd64func.S		machdep
 file	arch/amd64/amd64/amd64_trap.S		machdep
 file	arch/amd64/amd64/autoconf.c		machdep
 file	arch/amd64/amd64/busfunc.S		machdep

Index: src/sys/arch/xen/conf/files.xen
diff -u src/sys/arch/xen/conf/files.xen:1.178 src/sys/arch/xen/conf/files.xen:1.179
--- src/sys/arch/xen/conf/files.xen:1.178	Thu Feb 14 08:18:26 2019
+++ src/sys/arch/xen/conf/files.xen	Sat Sep  7 18:56:01 2019
@@ -1,4 +1,4 @@
-#	$NetBSD: files.xen,v 1.178 2019/02/14 08:18:26 cherry Exp $
+#	$NetBSD: files.xen,v 1.179 2019/09/07 18:56:01 maxv Exp $
 #	NetBSD: files.x86,v 1.10 2003/10/08 17:30:00 bouyer Exp 
 #	NetBSD: files.i386,v 1.254 2004/03/25 23:32:10 jmc Exp 
 
@@ -65,7 +65,6 @@ file	crypto/blowfish/arch/i386/bf_cbc.S	
 
 elifdef amd64
 file	arch/amd64/amd64/autoconf.c		xenpvhvm
-file	arch/amd64/amd64/amd64func.S		machdep & xenpvhvm
 file	arch/amd64/amd64/busfunc.S
 file	arch/amd64/amd64/cpufunc.S
 file	arch/amd64/amd64/cpu_in_cksum.S		(inet | inet6) & cpu_in_cksum

Reply via email to