summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Evans <bde@FreeBSD.org>1994-11-15 14:12:55 +0000
committerBruce Evans <bde@FreeBSD.org>1994-11-15 14:12:55 +0000
commitb0d1e6de0489d10ae88a69cdc6a8223848577aa2 (patch)
treecf0fa9c96ed56bbcc99a4b2a1f459b86ec6775d6
parentdc4de4ca23abfc5744e5a7ec633bf32a376eba54 (diff)
Notes
-rw-r--r--sys/amd64/amd64/machdep.c16
-rw-r--r--sys/amd64/include/segments.h8
-rw-r--r--sys/i386/i386/machdep.c16
-rw-r--r--sys/i386/include/segments.h8
4 files changed, 32 insertions, 16 deletions
diff --git a/sys/amd64/amd64/machdep.c b/sys/amd64/amd64/machdep.c
index c2aa6be02f5b..4a3f0bd61796 100644
--- a/sys/amd64/amd64/machdep.c
+++ b/sys/amd64/amd64/machdep.c
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* from: @(#)machdep.c 7.4 (Berkeley) 6/3/91
- * $Id: machdep.c,v 1.90 1994/11/14 14:19:55 bde Exp $
+ * $Id: machdep.c,v 1.91 1994/11/14 14:23:54 bde Exp $
*/
#include "npx.h"
@@ -160,8 +160,6 @@ extern int pager_map_size;
#define offsetof(type, member) ((size_t)(&((type *)0)->member))
-static union descriptor ldt[NLDT]; /* local descriptor table */
-
void
cpu_startup()
{
@@ -932,15 +930,18 @@ cpu_sysctl(name, namelen, oldp, oldlenp, newp, newlen, p)
* Initialize segments & interrupt table
*/
+int currentldt;
+int _default_ldt;
union descriptor gdt[NGDT]; /* global descriptor table */
struct gate_descriptor idt[NIDT]; /* interrupt descriptor table */
+union descriptor ldt[NLDT]; /* local descriptor table */
struct i386tss tss, panic_tss;
extern struct user *proc0paddr;
/* software prototypes -- in more palatable form */
-static struct soft_segment_descriptor gdt_segs[] = {
+struct soft_segment_descriptor gdt_segs[] = {
/* GNULL_SEL 0 Null Descriptor */
{ 0x0, /* segment base address */
0x0, /* length */
@@ -1087,7 +1088,8 @@ struct soft_segment_descriptor ldt_segs[] = {
1, /* segment descriptor present */
0, 0,
1, /* default 32 vs 16 bit size */
- 1 /* limit granularity (byte/page units)*/ } };
+ 1 /* limit granularity (byte/page units)*/ },
+};
void
setidt(idx, func, typ, dpl)
@@ -1245,7 +1247,9 @@ init386(first)
r_idt.rd_base = (int) idt;
lidt(&r_idt);
- lldt(GSEL(GLDT_SEL, SEL_KPL));
+ _default_ldt = GSEL(GLDT_SEL, SEL_KPL);
+ lldt(_default_ldt);
+ currentldt = _default_ldt;
#ifdef DDB
kdb_init();
diff --git a/sys/amd64/include/segments.h b/sys/amd64/include/segments.h
index 356880f0fccb..63025996fbfb 100644
--- a/sys/amd64/include/segments.h
+++ b/sys/amd64/include/segments.h
@@ -35,11 +35,11 @@
* SUCH DAMAGE.
*
* from: @(#)segments.h 7.1 (Berkeley) 5/9/91
- * $Id: segments.h,v 1.5 1994/10/01 02:56:08 davidg Exp $
+ * $Id: segments.h,v 1.6 1994/11/14 14:18:15 bde Exp $
*/
#ifndef _MACHINE_SEGMENTS_H_
-#define _MACHINE_SEGMENTS_H_ 1
+#define _MACHINE_SEGMENTS_H_
/*
* 386 Segmentation Data Structures and definitions
@@ -231,8 +231,12 @@ struct region_descriptor {
#define NLDT (LUDATA_SEL + 1)
#ifdef KERNEL
+extern int currentldt;
+extern int _default_ldt;
extern union descriptor gdt[NGDT];
+extern struct soft_segment_descriptor gdt_segs[];
extern struct gate_descriptor idt[NIDT];
+extern union descriptor ldt[NLDT];
void lgdt __P((struct region_descriptor *rdp));
void lidt __P((struct region_descriptor *rdp));
diff --git a/sys/i386/i386/machdep.c b/sys/i386/i386/machdep.c
index c2aa6be02f5b..4a3f0bd61796 100644
--- a/sys/i386/i386/machdep.c
+++ b/sys/i386/i386/machdep.c
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* from: @(#)machdep.c 7.4 (Berkeley) 6/3/91
- * $Id: machdep.c,v 1.90 1994/11/14 14:19:55 bde Exp $
+ * $Id: machdep.c,v 1.91 1994/11/14 14:23:54 bde Exp $
*/
#include "npx.h"
@@ -160,8 +160,6 @@ extern int pager_map_size;
#define offsetof(type, member) ((size_t)(&((type *)0)->member))
-static union descriptor ldt[NLDT]; /* local descriptor table */
-
void
cpu_startup()
{
@@ -932,15 +930,18 @@ cpu_sysctl(name, namelen, oldp, oldlenp, newp, newlen, p)
* Initialize segments & interrupt table
*/
+int currentldt;
+int _default_ldt;
union descriptor gdt[NGDT]; /* global descriptor table */
struct gate_descriptor idt[NIDT]; /* interrupt descriptor table */
+union descriptor ldt[NLDT]; /* local descriptor table */
struct i386tss tss, panic_tss;
extern struct user *proc0paddr;
/* software prototypes -- in more palatable form */
-static struct soft_segment_descriptor gdt_segs[] = {
+struct soft_segment_descriptor gdt_segs[] = {
/* GNULL_SEL 0 Null Descriptor */
{ 0x0, /* segment base address */
0x0, /* length */
@@ -1087,7 +1088,8 @@ struct soft_segment_descriptor ldt_segs[] = {
1, /* segment descriptor present */
0, 0,
1, /* default 32 vs 16 bit size */
- 1 /* limit granularity (byte/page units)*/ } };
+ 1 /* limit granularity (byte/page units)*/ },
+};
void
setidt(idx, func, typ, dpl)
@@ -1245,7 +1247,9 @@ init386(first)
r_idt.rd_base = (int) idt;
lidt(&r_idt);
- lldt(GSEL(GLDT_SEL, SEL_KPL));
+ _default_ldt = GSEL(GLDT_SEL, SEL_KPL);
+ lldt(_default_ldt);
+ currentldt = _default_ldt;
#ifdef DDB
kdb_init();
diff --git a/sys/i386/include/segments.h b/sys/i386/include/segments.h
index 356880f0fccb..63025996fbfb 100644
--- a/sys/i386/include/segments.h
+++ b/sys/i386/include/segments.h
@@ -35,11 +35,11 @@
* SUCH DAMAGE.
*
* from: @(#)segments.h 7.1 (Berkeley) 5/9/91
- * $Id: segments.h,v 1.5 1994/10/01 02:56:08 davidg Exp $
+ * $Id: segments.h,v 1.6 1994/11/14 14:18:15 bde Exp $
*/
#ifndef _MACHINE_SEGMENTS_H_
-#define _MACHINE_SEGMENTS_H_ 1
+#define _MACHINE_SEGMENTS_H_
/*
* 386 Segmentation Data Structures and definitions
@@ -231,8 +231,12 @@ struct region_descriptor {
#define NLDT (LUDATA_SEL + 1)
#ifdef KERNEL
+extern int currentldt;
+extern int _default_ldt;
extern union descriptor gdt[NGDT];
+extern struct soft_segment_descriptor gdt_segs[];
extern struct gate_descriptor idt[NIDT];
+extern union descriptor ldt[NLDT];
void lgdt __P((struct region_descriptor *rdp));
void lidt __P((struct region_descriptor *rdp));