Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 12 May 2010 10:29:06 +0000 (UTC)
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r207957 - head/sys/amd64/amd64
Message-ID:  <201005121029.o4CAT6AB080703@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kib
Date: Wed May 12 10:29:06 2010
New Revision: 207957
URL: http://svn.freebsd.org/changeset/base/207957

Log:
  Remove unneeded overrides of the segment registers in the inner trap
  frame upon segment register load fault. The doreti procedure does not
  load segment registers when returning to the kernel frame, and current
  values in the segment descriptor cache already allow the kernel mode
  to run, not modified by faulted loaded.
  
  Suggested by:	bde
  Tested by:	pho
  MFC after:	1 week

Modified:
  head/sys/amd64/amd64/trap.c

Modified: head/sys/amd64/amd64/trap.c
==============================================================================
--- head/sys/amd64/amd64/trap.c	Wed May 12 09:51:57 2010	(r207956)
+++ head/sys/amd64/amd64/trap.c	Wed May 12 10:29:06 2010	(r207957)
@@ -488,22 +488,18 @@ trap(struct trapframe *frame)
 			}
 			if (frame->tf_rip == (long)ld_ds) {
 				frame->tf_rip = (long)ds_load_fault;
-				frame->tf_ds = _udatasel;
 				goto out;
 			}
 			if (frame->tf_rip == (long)ld_es) {
 				frame->tf_rip = (long)es_load_fault;
-				frame->tf_es = _udatasel;
 				goto out;
 			}
 			if (frame->tf_rip == (long)ld_fs) {
 				frame->tf_rip = (long)fs_load_fault;
-				frame->tf_fs = _ufssel;
 				goto out;
 			}
 			if (frame->tf_rip == (long)ld_gs) {
 				frame->tf_rip = (long)gs_load_fault;
-				frame->tf_gs = _ugssel;
 				goto out;
 			}
 			if (frame->tf_rip == (long)ld_gsbase) {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201005121029.o4CAT6AB080703>