summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorkato <kato@FreeBSD.org>2000-08-12 07:35:12 +0000
committerkato <kato@FreeBSD.org>2000-08-12 07:35:12 +0000
commit6d2d726af5d8677931430a34bff12f7b211a9759 (patch)
treef1edc5068d538eadb5b778869bc0ec8e4912f8f9 /sys
parentda5b232bcb7250ac3a784f385a3da32c32134f58 (diff)
downloadFreeBSD-src-6d2d726af5d8677931430a34bff12f7b211a9759.zip
FreeBSD-src-6d2d726af5d8677931430a34bff12f7b211a9759.tar.gz
Merged from sys/i386/i386/machdep.c revision 1.400.
Diffstat (limited to 'sys')
-rw-r--r--sys/pc98/i386/machdep.c19
-rw-r--r--sys/pc98/pc98/machdep.c19
2 files changed, 38 insertions, 0 deletions
diff --git a/sys/pc98/i386/machdep.c b/sys/pc98/i386/machdep.c
index 0e27302..a77a583 100644
--- a/sys/pc98/i386/machdep.c
+++ b/sys/pc98/i386/machdep.c
@@ -253,6 +253,7 @@ vm_offset_t phys_avail[10];
static vm_offset_t buffer_sva, buffer_eva;
vm_offset_t clean_sva, clean_eva;
static vm_offset_t pager_sva, pager_eva;
+static struct trapframe proc0_tf;
#define offsetof(type, member) ((size_t)(&((type *)0)->member))
@@ -447,6 +448,7 @@ again:
mp_start(); /* fire up the APs and APICs */
mp_announce();
#endif /* SMP */
+ cpu_setregs();
}
int
@@ -1077,6 +1079,22 @@ setregs(p, entry, stack, ps_strings)
p->p_retval[1] = 0;
}
+void
+cpu_setregs(void)
+{
+ unsigned int cr0;
+
+ cr0 = rcr0();
+ cr0 |= CR0_NE; /* Done by npxinit() */
+ cr0 |= CR0_MP | CR0_TS; /* Done at every execve() too. */
+#ifdef I386_CPU
+ if (cpu_class != CPUCLASS_386)
+#endif
+ cr0 |= CR0_WP | CR0_AM;
+ load_cr0(cr0);
+ load_gs(_udatasel);
+}
+
static int
sysctl_machdep_adjkerntz(SYSCTL_HANDLER_ARGS)
{
@@ -2277,6 +2295,7 @@ init386(first)
proc0.p_addr->u_pcb.pcb_mpnest = 1;
#endif
proc0.p_addr->u_pcb.pcb_ext = 0;
+ proc0.p_md.md_regs = &proc0_tf;
}
#if defined(I586_CPU) && !defined(NO_F00F_HACK)
diff --git a/sys/pc98/pc98/machdep.c b/sys/pc98/pc98/machdep.c
index 0e27302..a77a583 100644
--- a/sys/pc98/pc98/machdep.c
+++ b/sys/pc98/pc98/machdep.c
@@ -253,6 +253,7 @@ vm_offset_t phys_avail[10];
static vm_offset_t buffer_sva, buffer_eva;
vm_offset_t clean_sva, clean_eva;
static vm_offset_t pager_sva, pager_eva;
+static struct trapframe proc0_tf;
#define offsetof(type, member) ((size_t)(&((type *)0)->member))
@@ -447,6 +448,7 @@ again:
mp_start(); /* fire up the APs and APICs */
mp_announce();
#endif /* SMP */
+ cpu_setregs();
}
int
@@ -1077,6 +1079,22 @@ setregs(p, entry, stack, ps_strings)
p->p_retval[1] = 0;
}
+void
+cpu_setregs(void)
+{
+ unsigned int cr0;
+
+ cr0 = rcr0();
+ cr0 |= CR0_NE; /* Done by npxinit() */
+ cr0 |= CR0_MP | CR0_TS; /* Done at every execve() too. */
+#ifdef I386_CPU
+ if (cpu_class != CPUCLASS_386)
+#endif
+ cr0 |= CR0_WP | CR0_AM;
+ load_cr0(cr0);
+ load_gs(_udatasel);
+}
+
static int
sysctl_machdep_adjkerntz(SYSCTL_HANDLER_ARGS)
{
@@ -2277,6 +2295,7 @@ init386(first)
proc0.p_addr->u_pcb.pcb_mpnest = 1;
#endif
proc0.p_addr->u_pcb.pcb_ext = 0;
+ proc0.p_md.md_regs = &proc0_tf;
}
#if defined(I586_CPU) && !defined(NO_F00F_HACK)
OpenPOWER on IntegriCloud