PERFORCE change 162412 for review

Peter Wemm peter at FreeBSD.org
Wed May 20 22:56:29 UTC 2009


http://perforce.freebsd.org/chv.cgi?CH=162412

Change 162412 by peter at peter_daintree on 2009/05/20 22:55:56

	%gs hacks are obe.  remove stray whitespace change.

Affected files ...

.. //depot/projects/hammer/sys/amd64/amd64/exception.S#54 edit
.. //depot/projects/hammer/sys/amd64/amd64/support.S#40 edit
.. //depot/projects/hammer/sys/amd64/include/cpufunc.h#40 edit
.. //depot/projects/hammer/sys/amd64/include/md_var.h#45 edit
.. //depot/projects/hammer/sys/kern/kern_proc.c#82 edit

Differences ...

==== //depot/projects/hammer/sys/amd64/amd64/exception.S#54 (text+ko) ====

@@ -308,9 +308,6 @@
 	leaq	doreti_iret(%rip),%rdi	/* iretq trapped */
 	cmpq	%rdi,TF_RIP(%rsp)
 	je	1f			/* kernel but with user gsbase!! */
-	leaq	load_gs_load(%rip),%rdi	/* load_gs() trapped */
-	cmpq	%rdi,TF_RIP(%rsp)
-	je	1f
 	testb	$SEL_RPL_MASK,TF_CS(%rsp) /* Did we come from kernel? */
 	jz	2f			/* already running with kernel GS.base */
 1:	swapgs

==== //depot/projects/hammer/sys/amd64/amd64/support.S#40 (text+ko) ====

@@ -665,25 +665,6 @@
 	lretq
 END(lgdt)
 
-/*
- * Special handling of %gs selector.
- * This is done as an asm function so that traps can be recovered
- * from while in the intermediate gsbase state.
- * %edi
- */
-/* void load_gs(u_int sel); */
-ENTRY(load_gs)
-	pushfq
-	cli
-	swapgs
-	.globl load_gs_load
-load_gs_load:
-	movl	%edi,%gs
-	swapgs
-	mfence		/* CPU errata */
-	popfq
-	ret
-
 /*****************************************************************************/
 /* setjump, longjump                                                         */
 /*****************************************************************************/

==== //depot/projects/hammer/sys/amd64/include/cpufunc.h#40 (text+ko) ====

@@ -462,10 +462,7 @@
         __asm __volatile("movl %0,%%fs" : : "rm" (sel));
 }
 
-#ifdef _KERNEL
-/* In assembler so we can recover from traps */
-void load_gs(u_int sel);
-#else
+#ifndef _KERNEL	/* Do not use in kernel */
 static __inline void
 load_gs(u_int sel)
 {

==== //depot/projects/hammer/sys/amd64/include/md_var.h#45 (text+ko) ====

@@ -87,7 +87,6 @@
 void	gs_load_fault(void) __asm(__STRING(gs_load_fault));
 void	dump_add_page(vm_paddr_t);
 void	dump_drop_page(vm_paddr_t);
-void	load_gs_load(void) __asm(__STRING(load_gs_load));
 void	initializecpu(void);
 void	fillw(int /*u_short*/ pat, void *base, size_t cnt);
 void	fpstate_drop(struct thread *td);

==== //depot/projects/hammer/sys/kern/kern_proc.c#82 (text+ko) ====

@@ -1509,7 +1509,6 @@
 				}
 				vput(vp);
 				VFS_UNLOCK_GIANT(vfslocked);
-
 			}
 		} else {
 			kve->kve_type = KVME_TYPE_NONE;


More information about the p4-projects mailing list