Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 21 Sep 2002 04:22:21 -0700 (PDT)
From:      Peter Wemm <peter@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 17854 for review
Message-ID:  <200209211122.g8LBMLsh046371@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://people.freebsd.org/~peter/p4db/chv.cgi?CH=17854

Change 17854 by peter@peter_overcee on 2002/09/21 04:21:18

	partial updates for new segmentation formats.  I'm too tired
	to make sense of this stuff yet. :-]

Affected files ...

.. //depot/projects/hammer/sys/x86_64/include/segments.h#4 edit
.. //depot/projects/hammer/sys/x86_64/x86_64/machdep.c#18 edit

Differences ...

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

@@ -70,7 +70,8 @@
 	unsigned sd_dpl:2 ;		/* segment descriptor priority level */
 	unsigned sd_p:1 ;		/* segment descriptor present */
 	unsigned sd_hilimit:4 ;		/* segment extent (msb) */
-	unsigned sd_xx:2 ;		/* unused */
+	unsigned sd_xx:1 ;		/* unused */
+	unsigned sd_l:2 ;		/* long mode (cs only) */
 	unsigned sd_def32:1 ;		/* default 32 vs 16 bit size */
 	unsigned sd_gran:1 ;		/* limit granularity (byte/page units)*/
 	unsigned sd_hibase:8 ;		/* segment base address  (msb) */
@@ -82,12 +83,14 @@
 struct	gate_descriptor	{
 	unsigned gd_looffset:16 ;	/* gate offset (lsb) */
 	unsigned gd_selector:16 ;	/* gate segment selector */
-	unsigned gd_stkcpy:5 ;		/* number of stack wds to cpy */
-	unsigned gd_xx:3 ;		/* unused */
+	unsigned gd_ist:3 ;		/* IST table index */
+	unsigned gd_xx:5 ;		/* unused */
 	unsigned gd_type:5 ;		/* segment type */
 	unsigned gd_dpl:2 ;		/* segment descriptor priority level */
 	unsigned gd_p:1 ;		/* segment descriptor present */
 	unsigned gd_hioffset:16 ;	/* gate offset (msb) */
+	unsigned gd_hihioffset:32 ;	/* gate offset (bits 32-63) */
+	unsigned gd_rsvd:32 ;		/* reserved */
 } ;
 
 /*
@@ -100,21 +103,12 @@
 
 	/* system segments and gate types */
 #define	SDT_SYSNULL	 0	/* system null */
-#define	SDT_SYS286TSS	 1	/* system 286 TSS available */
-#define	SDT_SYSLDT	 2	/* system local descriptor table */
-#define	SDT_SYS286BSY	 3	/* system 286 TSS busy */
-#define	SDT_SYS286CGT	 4	/* system 286 call gate */
-#define	SDT_SYSTASKGT	 5	/* system task gate */
-#define	SDT_SYS286IGT	 6	/* system 286 interrupt gate */
-#define	SDT_SYS286TGT	 7	/* system 286 trap gate */
-#define	SDT_SYSNULL2	 8	/* system null again */
-#define	SDT_SYS386TSS	 9	/* system 386 TSS available */
-#define	SDT_SYSNULL3	10	/* system null again */
-#define	SDT_SYS386BSY	11	/* system 386 TSS busy */
-#define	SDT_SYS386CGT	12	/* system 386 call gate */
-#define	SDT_SYSNULL4	13	/* system null again */
-#define	SDT_SYS386IGT	14	/* system 386 interrupt gate */
-#define	SDT_SYS386TGT	15	/* system 386 trap gate */
+#define	SDT_SYSLDT	 2	/* system 64 bit local descriptor table */
+#define	SDT_SYSTSS	 9	/* system available 64 bit TSS */
+#define	SDT_SYSBSY	11	/* system busy 64 bit TSS */
+#define	SDT_SYSCGT	12	/* system 64 bit call gate */
+#define	SDT_SYSIGT	14	/* system 64 bit interrupt gate */
+#define	SDT_SYSTGT	15	/* system 64 bit trap gate */
 
 	/* memory segment types */
 #define	SDT_MEMRO	16	/* memory read only */

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

@@ -684,7 +684,7 @@
 {
 	0x0,			/* segment base address */
 	sizeof(struct i386tss)-1,/* length - all address space */
-	SDT_SYS386TSS,		/* segment type */
+	SDT_SYSTSS,		/* segment type */
 	0,			/* segment descriptor priority level */
 	1,			/* segment descriptor present */
 	0, 0,
@@ -711,7 +711,7 @@
 /* GPANIC_SEL	6 Panic Tss Descriptor */
 {	(int) &dblfault_tss,	/* segment base address  */
 	sizeof(struct i386tss)-1,/* length - all address space */
-	SDT_SYS386TSS,		/* segment type */
+	SDT_SYSTSS,		/* segment type */
 	0,			/* segment descriptor priority level */
 	1,			/* segment descriptor present */
 	0, 0,
@@ -813,7 +813,7 @@
 {
 
 	ssd->ssd_base  = (sd->sd_hibase << 24) | sd->sd_lobase;
-	ssd->ssd_limit = (sd->sd_hilimit << 16) | sd->sd_lolimit;
+	ssd->ssd_limit = (sd->sd_hilimit << 16) | sd->sd_Lolimit;
 	ssd->ssd_type  = sd->sd_type;
 	ssd->ssd_dpl   = sd->sd_dpl;
 	ssd->ssd_p     = sd->sd_p;

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe p4-projects" in the body of the message




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