Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 9 Apr 2003 21:13:24 -0700 (PDT)
From:      Peter Wemm <peter@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 28687 for review
Message-ID:  <200304100413.h3A4DOXF003555@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=28687

Change 28687 by peter@peter_daintree on 2003/04/09 21:13:03

	have a seperate selector for user data, not that it appears to matter

Affected files ...

.. //depot/projects/hammer/sys/x86_64/include/segments.h#15 edit
.. //depot/projects/hammer/sys/x86_64/x86_64/machdep.c#61 edit

Differences ...

==== //depot/projects/hammer/sys/x86_64/include/segments.h#15 (text+ko) ====

@@ -178,8 +178,9 @@
 #define	GDATA_SEL	2	/* Kernel Data Descriptor */
 #define	GPROC0_SEL	3	/* Task state process slot zero and up */
 /* slot 4 is second half of GPROC0_SEL */
-#define	GUCODE_SEL	5	/* Kernel Code Descriptor */
-#define	NGDT 		6
+#define	GUCODE_SEL	5	/* User Code Descriptor */
+#define	GUDATA_SEL	6	/* User Data Descriptor */
+#define	NGDT 		7
 
 #ifdef _KERNEL
 extern struct user_segment_descriptor gdt[];

==== //depot/projects/hammer/sys/x86_64/x86_64/machdep.c#61 (text+ko) ====

@@ -615,6 +615,15 @@
 	1,			/* long */
 	0,			/* default 32 vs 16 bit size */
 	1  			/* limit granularity (byte/page units)*/ },
+/* GUDATA_SEL	6 Code Descriptor for user */
+{	0x0,			/* segment base address  */
+	0xfffff,		/* length - all address space */
+	SDT_MEMRWA,		/* segment type */
+	SEL_UPL,		/* segment descriptor priority level */
+	1,			/* segment descriptor present */
+	1,			/* long */
+	0,			/* default 32 vs 16 bit size */
+	1  			/* limit granularity (byte/page units)*/ },
 };
 
 void
@@ -1253,6 +1262,11 @@
 
 	msgbufinit(msgbufp, MSGBUF_SIZE);
 
+	/* transfer to user mode */
+
+	_ucodesel = GSEL(LUCODE_SEL, SEL_UPL);
+	_udatasel = GSEL(LUDATA_SEL, SEL_UPL);
+
 	/* setup proc 0's pcb */
 	thread0.td_pcb->pcb_flags = 0; /* XXXKSE */
 	thread0.td_pcb->pcb_cr3 = IdlePML4;



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