diff options
author | bde <bde@FreeBSD.org> | 1997-09-01 01:54:52 +0000 |
---|---|---|
committer | bde <bde@FreeBSD.org> | 1997-09-01 01:54:52 +0000 |
commit | b5c24bb1133305960db1bf15cf53313e0d61b714 (patch) | |
tree | 8b0a9db598260aebbff925f731783d66e88fd1fe /sys/amd64 | |
parent | a059b2e7c8fc7680bc0536c45c891db372aa7e32 (diff) | |
download | FreeBSD-src-b5c24bb1133305960db1bf15cf53313e0d61b714.zip FreeBSD-src-b5c24bb1133305960db1bf15cf53313e0d61b714.tar.gz |
Move closer to supporting VM86 under SMP.
LINT now compiles but doesn't link. Other link-time breakage for LINT
is now visible (SMP is incompatible with SIMPLELOCK_DEBUG).
Submitted by: jlemon
Diffstat (limited to 'sys/amd64')
-rw-r--r-- | sys/amd64/amd64/machdep.c | 5 | ||||
-rw-r--r-- | sys/amd64/amd64/mp_machdep.c | 10 | ||||
-rw-r--r-- | sys/amd64/amd64/mptable.c | 10 | ||||
-rw-r--r-- | sys/amd64/include/mptable.h | 10 |
4 files changed, 31 insertions, 4 deletions
diff --git a/sys/amd64/amd64/machdep.c b/sys/amd64/amd64/machdep.c index 6bcf270..1c4489c 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.258 1997/08/26 18:10:30 peter Exp $ + * $Id: machdep.c,v 1.259 1997/08/31 23:08:27 bde Exp $ */ #include "apm.h" @@ -847,6 +847,9 @@ struct region_descriptor r_gdt, r_idt; #ifdef SMP extern struct i386tss common_tss; /* One tss per cpu */ +#ifdef VM86 +extern struct segment_descriptor common_tssd; +#endif /* VM86 */ #else struct i386tss common_tss; #ifdef VM86 diff --git a/sys/amd64/amd64/mp_machdep.c b/sys/amd64/amd64/mp_machdep.c index 322f0f1..1cca90d 100644 --- a/sys/amd64/amd64/mp_machdep.c +++ b/sys/amd64/amd64/mp_machdep.c @@ -22,7 +22,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: mp_machdep.c,v 1.34 1997/08/31 03:05:56 smp Exp smp $ + * $Id: mp_machdep.c,v 1.49 1997/08/31 03:17:47 fsmp Exp $ */ #include "opt_smp.h" @@ -241,6 +241,10 @@ extern pt_entry_t *KPTphys; /* Virtual address of per-cpu common_tss */ extern struct i386tss common_tss; +#ifdef VM86 +extern u_int private_tss; /* flag indicating private tss */ +extern struct segment_descriptor common_tssd; +#endif /* VM86 */ /* IdlePTD per cpu */ pd_entry_t *IdlePTDS[NCPU]; @@ -408,6 +412,10 @@ init_secondary(void) common_tss.tss_esp0 = 0; /* not used until after switch */ common_tss.tss_ss0 = GSEL(GDATA_SEL, SEL_KPL); common_tss.tss_ioopt = (sizeof common_tss) << 16; +#ifdef VM86 + common_tssd = gdt[slot].sd; + private_tss = 0; +#endif /* VM86 */ ltr(gsel_tss); load_cr0(0x8005003b); /* XXX! */ diff --git a/sys/amd64/amd64/mptable.c b/sys/amd64/amd64/mptable.c index 322f0f1..1cca90d 100644 --- a/sys/amd64/amd64/mptable.c +++ b/sys/amd64/amd64/mptable.c @@ -22,7 +22,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: mp_machdep.c,v 1.34 1997/08/31 03:05:56 smp Exp smp $ + * $Id: mp_machdep.c,v 1.49 1997/08/31 03:17:47 fsmp Exp $ */ #include "opt_smp.h" @@ -241,6 +241,10 @@ extern pt_entry_t *KPTphys; /* Virtual address of per-cpu common_tss */ extern struct i386tss common_tss; +#ifdef VM86 +extern u_int private_tss; /* flag indicating private tss */ +extern struct segment_descriptor common_tssd; +#endif /* VM86 */ /* IdlePTD per cpu */ pd_entry_t *IdlePTDS[NCPU]; @@ -408,6 +412,10 @@ init_secondary(void) common_tss.tss_esp0 = 0; /* not used until after switch */ common_tss.tss_ss0 = GSEL(GDATA_SEL, SEL_KPL); common_tss.tss_ioopt = (sizeof common_tss) << 16; +#ifdef VM86 + common_tssd = gdt[slot].sd; + private_tss = 0; +#endif /* VM86 */ ltr(gsel_tss); load_cr0(0x8005003b); /* XXX! */ diff --git a/sys/amd64/include/mptable.h b/sys/amd64/include/mptable.h index 322f0f1..1cca90d 100644 --- a/sys/amd64/include/mptable.h +++ b/sys/amd64/include/mptable.h @@ -22,7 +22,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: mp_machdep.c,v 1.34 1997/08/31 03:05:56 smp Exp smp $ + * $Id: mp_machdep.c,v 1.49 1997/08/31 03:17:47 fsmp Exp $ */ #include "opt_smp.h" @@ -241,6 +241,10 @@ extern pt_entry_t *KPTphys; /* Virtual address of per-cpu common_tss */ extern struct i386tss common_tss; +#ifdef VM86 +extern u_int private_tss; /* flag indicating private tss */ +extern struct segment_descriptor common_tssd; +#endif /* VM86 */ /* IdlePTD per cpu */ pd_entry_t *IdlePTDS[NCPU]; @@ -408,6 +412,10 @@ init_secondary(void) common_tss.tss_esp0 = 0; /* not used until after switch */ common_tss.tss_ss0 = GSEL(GDATA_SEL, SEL_KPL); common_tss.tss_ioopt = (sizeof common_tss) << 16; +#ifdef VM86 + common_tssd = gdt[slot].sd; + private_tss = 0; +#endif /* VM86 */ ltr(gsel_tss); load_cr0(0x8005003b); /* XXX! */ |