Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/netbsd-6]: src/sys/arch/i386/i386 Pull up following revision(s) (request...



details:   https://anonhg.NetBSD.org/src/rev/2c1c9de7757f
branches:  netbsd-6
changeset: 773844:2c1c9de7757f
user:      riz <riz%NetBSD.org@localhost>
date:      Mon Feb 27 20:29:36 2012 +0000

description:
Pull up following revision(s) (requested by bouyer in ticket #60):
        sys/arch/i386/i386/machdep.c: revision 1.722
Do not special-case XEN and always use the proper selectors for %fs and %gs
in buildcontext() and setregs(). The consequence was that signal handlers
would have the wrong %fs/%gs. Found by running atf tests under Xen/i386.

diffstat:

 sys/arch/i386/i386/machdep.c |  14 ++------------
 1 files changed, 2 insertions(+), 12 deletions(-)

diffs (46 lines):

diff -r 6f65095ea8bb -r 2c1c9de7757f sys/arch/i386/i386/machdep.c
--- a/sys/arch/i386/i386/machdep.c      Mon Feb 27 20:28:19 2012 +0000
+++ b/sys/arch/i386/i386/machdep.c      Mon Feb 27 20:29:36 2012 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: machdep.c,v 1.717.2.2 2012/02/23 18:37:32 riz Exp $    */
+/*     $NetBSD: machdep.c,v 1.717.2.3 2012/02/27 20:29:36 riz Exp $    */
 
 /*-
  * Copyright (c) 1996, 1997, 1998, 2000, 2004, 2006, 2008, 2009
@@ -67,7 +67,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.717.2.2 2012/02/23 18:37:32 riz Exp $");
+__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.717.2.3 2012/02/27 20:29:36 riz Exp $");
 
 #include "opt_beep.h"
 #include "opt_compat_ibcs2.h"
@@ -734,13 +734,8 @@
 {
        struct trapframe *tf = l->l_md.md_regs;
 
-#ifndef XEN
        tf->tf_gs = GSEL(GUGS_SEL, SEL_UPL);
        tf->tf_fs = GSEL(GUFS_SEL, SEL_UPL);
-#else
-       tf->tf_gs = GSEL(GUDATA_SEL, SEL_UPL);
-       tf->tf_fs = GSEL(GUDATA_SEL, SEL_UPL);
-#endif
        tf->tf_es = GSEL(GUDATA_SEL, SEL_UPL);
        tf->tf_ds = GSEL(GUDATA_SEL, SEL_UPL);
        tf->tf_eip = (int)catcher;
@@ -1019,13 +1014,8 @@
        memcpy(&pcb->pcb_gsd, &gdt[GUDATA_SEL], sizeof(pcb->pcb_gsd));
 
        tf = l->l_md.md_regs;
-#ifndef XEN
        tf->tf_gs = GSEL(GUGS_SEL, SEL_UPL);
        tf->tf_fs = GSEL(GUFS_SEL, SEL_UPL);
-#else
-       tf->tf_gs = LSEL(LUDATA_SEL, SEL_UPL);
-       tf->tf_fs = LSEL(LUDATA_SEL, SEL_UPL);
-#endif
        tf->tf_es = LSEL(LUDATA_SEL, SEL_UPL);
        tf->tf_ds = LSEL(LUDATA_SEL, SEL_UPL);
        tf->tf_edi = 0;



Home | Main Index | Thread Index | Old Index