summaryrefslogtreecommitdiffstats
path: root/sys/amd64/include
diff options
context:
space:
mode:
authordg <dg@FreeBSD.org>1994-01-31 10:27:13 +0000
committerdg <dg@FreeBSD.org>1994-01-31 10:27:13 +0000
commit8df5d2c1f8c514a14d5728e5a9f9e30e48ae90eb (patch)
tree3f282f48fea85301258a9cb32507359b11f365f7 /sys/amd64/include
parent805b2d4d90c77f94e31f786f0afbd08f5fd8e1cb (diff)
downloadFreeBSD-src-8df5d2c1f8c514a14d5728e5a9f9e30e48ae90eb.zip
FreeBSD-src-8df5d2c1f8c514a14d5728e5a9f9e30e48ae90eb.tar.gz
WINE/user LDT support from John Brezak, ported to FreeBSD by Jeffrey Hsu
<hsu@soda.berkeley.edu>.
Diffstat (limited to 'sys/amd64/include')
-rw-r--r--sys/amd64/include/frame.h5
-rw-r--r--sys/amd64/include/reg.h4
-rw-r--r--sys/amd64/include/segments.h42
3 files changed, 41 insertions, 10 deletions
diff --git a/sys/amd64/include/frame.h b/sys/amd64/include/frame.h
index b36c141..05bf265 100644
--- a/sys/amd64/include/frame.h
+++ b/sys/amd64/include/frame.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)frame.h 5.2 (Berkeley) 1/18/91
- * $Id: frame.h,v 1.6 1993/12/19 00:50:15 wollman Exp $
+ * $Id: frame.h,v 1.7 1994/01/03 07:55:32 davidg Exp $
*/
#ifndef _MACHINE_FRAME_H_
@@ -109,9 +109,6 @@ struct sigframe {
struct sigcontext *sf_scp;
char *sf_addr;
sig_t sf_handler;
- int sf_eax;
- int sf_edx;
- int sf_ecx;
struct sigcontext sf_sc;
};
#endif /* _MACHINE_FRAME_H_ */
diff --git a/sys/amd64/include/reg.h b/sys/amd64/include/reg.h
index 4cefae0..d20f8d0 100644
--- a/sys/amd64/include/reg.h
+++ b/sys/amd64/include/reg.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)reg.h 5.5 (Berkeley) 1/18/91
- * $Id: reg.h,v 1.5 1993/12/03 05:10:08 alm Exp $
+ * $Id: reg.h,v 1.6 1994/01/03 07:55:34 davidg Exp $
*/
#ifndef _MACHINE_REG_H_
@@ -54,7 +54,7 @@
#define tEDI (2)
#define tESI (3)
#define tEBP (4)
-
+#define tISP (5)
#define tEBX (6)
#define tEDX (7)
#define tECX (8)
diff --git a/sys/amd64/include/segments.h b/sys/amd64/include/segments.h
index a7ed234..023a0cf 100644
--- a/sys/amd64/include/segments.h
+++ b/sys/amd64/include/segments.h
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* from: @(#)segments.h 7.1 (Berkeley) 5/9/91
- * $Id: segments.h,v 1.2 1993/10/16 14:39:30 rgrimes Exp $
+ * $Id: segments.h,v 1.3 1993/11/07 17:43:08 wollman Exp $
*/
#ifndef _MACHINE_SEGMENTS_H_
@@ -64,7 +64,8 @@
*/
struct segment_descriptor {
unsigned sd_lolimit:16 ; /* segment extent (lsb) */
- unsigned sd_lobase:24 ; /* segment base address (lsb) */
+ unsigned sd_lobase:24 __attribute__ ((packed));
+ /* segment base address (lsb) */
unsigned sd_type:5 ; /* segment type */
unsigned sd_dpl:2 ; /* segment descriptor priority level */
unsigned sd_p:1 ; /* segment descriptor present */
@@ -178,8 +179,8 @@ extern sdtossd() ; /* to encode a sd */
* region descriptors, used to load gdt/idt tables before segments yet exist.
*/
struct region_descriptor {
- unsigned rd_limit:16; /* segment extent */
- unsigned rd_base:32; /* base address */
+ unsigned rd_limit:16; /* segment extent */
+ unsigned rd_base:32 __attribute__ ((packed)); /* base address */
};
/*
@@ -198,4 +199,37 @@ struct region_descriptor {
#define NIDT 256
#define NRSVIDT 32 /* reserved entries for cpu exceptions */
+
+/*
+ * Entries in the Global Descriptor Table (GDT)
+ */
+#define GNULL_SEL 0 /* Null Descriptor */
+#define GCODE_SEL 1 /* Kernel Code Descriptor */
+#define GDATA_SEL 2 /* Kernel Data Descriptor */
+#define GLDT_SEL 3 /* LDT - eventually one per process */
+#define GTGATE_SEL 4 /* Process task switch gate */
+#define GPANIC_SEL 5 /* Task state to consider panic from */
+#define GPROC0_SEL 6 /* Task state process slot zero and up */
+#define GUSERLDT_SEL 7 /* User LDT */
+#define NGDT GUSERLDT_SEL+1
+
+/*
+ * Entries in the Local Descriptor Table (LDT)
+ */
+#define LSYS5CALLS_SEL 0 /* forced by intel BCS */
+#define LSYS5SIGR_SEL 1
+#define L43BSDCALLS_SEL 2 /* notyet */
+#define LUCODE_SEL 3
+#define LUDATA_SEL 4
+/* seperate stack, es,fs,gs sels ? */
+/* #define LPOSIXCALLS_SEL 5*/ /* notyet */
+#define NLDT LUDATA_SEL+1
+
+#ifdef KERNEL
+extern int currentldt;
+extern union descriptor gdt[NGDT];
+extern union descriptor ldt[NLDT];
+extern struct soft_segment_descriptor gdt_segs[];
+#endif
+
#endif /* _MACHINE_SEGMENTS_H_ */
OpenPOWER on IntegriCloud