diff options
author | kato <kato@FreeBSD.org> | 2000-08-12 07:35:12 +0000 |
---|---|---|
committer | kato <kato@FreeBSD.org> | 2000-08-12 07:35:12 +0000 |
commit | 6d2d726af5d8677931430a34bff12f7b211a9759 (patch) | |
tree | f1edc5068d538eadb5b778869bc0ec8e4912f8f9 /sys | |
parent | da5b232bcb7250ac3a784f385a3da32c32134f58 (diff) | |
download | FreeBSD-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.c | 19 | ||||
-rw-r--r-- | sys/pc98/pc98/machdep.c | 19 |
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) |