diff options
author | kato <kato@FreeBSD.org> | 1997-09-22 12:20:42 +0000 |
---|---|---|
committer | kato <kato@FreeBSD.org> | 1997-09-22 12:20:42 +0000 |
commit | 5442745e13c16640fd0b3869af9e52a8ee4047bd (patch) | |
tree | 0d95fdd90c035c98d228880669fd9ce543ce3e78 /sys/pc98 | |
parent | 9a018bf4217895e7c15c21b44b5338702918e284 (diff) | |
download | FreeBSD-src-5442745e13c16640fd0b3869af9e52a8ee4047bd.zip FreeBSD-src-5442745e13c16640fd0b3869af9e52a8ee4047bd.tar.gz |
Synchronize with sys/i386/i386/machdep.c and trap.c reivisions 1.265
and 1.111, respectively.
Diffstat (limited to 'sys/pc98')
-rw-r--r-- | sys/pc98/i386/machdep.c | 32 | ||||
-rw-r--r-- | sys/pc98/i386/trap.c | 4 | ||||
-rw-r--r-- | sys/pc98/pc98/machdep.c | 32 |
3 files changed, 57 insertions, 11 deletions
diff --git a/sys/pc98/i386/machdep.c b/sys/pc98/i386/machdep.c index 113c711..63ea4ea 100644 --- a/sys/pc98/i386/machdep.c +++ b/sys/pc98/i386/machdep.c @@ -35,7 +35,7 @@ * SUCH DAMAGE. * * from: @(#)machdep.c 7.4 (Berkeley) 6/3/91 - * $Id: machdep.c,v 1.55 1997/09/03 12:41:15 kato Exp $ + * $Id: machdep.c,v 1.56 1997/09/05 10:14:36 kato Exp $ */ #include "apm.h" @@ -249,6 +249,15 @@ cpu_startup(dummy) setup_netisrs(&netisr_set); /* + * Calculate callout wheel size + */ + for (callwheelsize = 1, callwheelbits = 0; + callwheelsize < ncallout; + callwheelsize <<= 1, ++callwheelbits) + ; + callwheelmask = callwheelsize - 1; + + /* * Allocate space for system data structures. * The first available kernel virtual address is in "v". * As pages of kernel virtual memory are allocated, "v" is incremented. @@ -272,6 +281,7 @@ again: #define valloclim(name, type, num, lim) \ (name) = (type *)v; v = (caddr_t)((lim) = ((name)+(num))) valloc(callout, struct callout, ncallout); + valloc(callwheel, struct callout_tailq, callwheelsize); #ifdef SYSVSHM valloc(shmsegs, struct shmid_ds, shminfo.shmmni); #endif @@ -369,9 +379,14 @@ again: /* * Initialize callouts */ - callfree = callout; - for (i = 1; i < ncallout; i++) - callout[i-1].c_next = &callout[i]; + SLIST_INIT(&callfree); + for (i = 0; i < ncallout; i++) { + SLIST_INSERT_HEAD(&callfree, &callout[i], c_links.sle); + } + + for (i = 0; i < callwheelsize; i++) { + TAILQ_INIT(&callwheel[i]); + } #if defined(USERCONFIG) #if defined(USERCONFIG_BOOT) @@ -851,12 +866,15 @@ struct region_descriptor r_gdt, r_idt; extern struct i386tss common_tss; /* One tss per cpu */ #ifdef VM86 extern struct segment_descriptor common_tssd; +extern int private_tss; +extern u_int my_tr; #endif /* VM86 */ #else struct i386tss common_tss; #ifdef VM86 struct segment_descriptor common_tssd; -u_int private_tss = 0; /* flag indicating private tss */ +u_int private_tss; /* flag indicating private tss */ +u_int my_tr; /* which task register setting */ #endif /* VM86 */ #endif @@ -1504,6 +1522,10 @@ init386(first) common_tss.tss_ioopt = (sizeof common_tss) << 16; gsel_tss = GSEL(GPROC0_SEL, SEL_KPL); ltr(gsel_tss); +#ifdef VM86 + private_tss = 0; + my_tr = GPROC0_SEL; +#endif dblfault_tss.tss_esp = dblfault_tss.tss_esp0 = dblfault_tss.tss_esp1 = dblfault_tss.tss_esp2 = (int) &dblfault_stack[sizeof(dblfault_stack)]; diff --git a/sys/pc98/i386/trap.c b/sys/pc98/i386/trap.c index 202bed8..713b55e 100644 --- a/sys/pc98/i386/trap.c +++ b/sys/pc98/i386/trap.c @@ -35,7 +35,7 @@ * SUCH DAMAGE. * * from: @(#)trap.c 7.4 (Berkeley) 5/13/91 - * $Id: trap.c,v 1.34 1997/08/29 08:15:57 kato Exp $ + * $Id: trap.c,v 1.35 1997/09/06 01:19:10 kato Exp $ */ /* @@ -830,6 +830,8 @@ trap_fatal(frame) printf("tty "); if ((cpl & bio_imask) == bio_imask) printf("bio "); + if ((cpl & cam_imask) == cam_imask) + printf("cam "); if (cpl == 0) printf("none"); #ifdef SMP diff --git a/sys/pc98/pc98/machdep.c b/sys/pc98/pc98/machdep.c index 113c711..63ea4ea 100644 --- a/sys/pc98/pc98/machdep.c +++ b/sys/pc98/pc98/machdep.c @@ -35,7 +35,7 @@ * SUCH DAMAGE. * * from: @(#)machdep.c 7.4 (Berkeley) 6/3/91 - * $Id: machdep.c,v 1.55 1997/09/03 12:41:15 kato Exp $ + * $Id: machdep.c,v 1.56 1997/09/05 10:14:36 kato Exp $ */ #include "apm.h" @@ -249,6 +249,15 @@ cpu_startup(dummy) setup_netisrs(&netisr_set); /* + * Calculate callout wheel size + */ + for (callwheelsize = 1, callwheelbits = 0; + callwheelsize < ncallout; + callwheelsize <<= 1, ++callwheelbits) + ; + callwheelmask = callwheelsize - 1; + + /* * Allocate space for system data structures. * The first available kernel virtual address is in "v". * As pages of kernel virtual memory are allocated, "v" is incremented. @@ -272,6 +281,7 @@ again: #define valloclim(name, type, num, lim) \ (name) = (type *)v; v = (caddr_t)((lim) = ((name)+(num))) valloc(callout, struct callout, ncallout); + valloc(callwheel, struct callout_tailq, callwheelsize); #ifdef SYSVSHM valloc(shmsegs, struct shmid_ds, shminfo.shmmni); #endif @@ -369,9 +379,14 @@ again: /* * Initialize callouts */ - callfree = callout; - for (i = 1; i < ncallout; i++) - callout[i-1].c_next = &callout[i]; + SLIST_INIT(&callfree); + for (i = 0; i < ncallout; i++) { + SLIST_INSERT_HEAD(&callfree, &callout[i], c_links.sle); + } + + for (i = 0; i < callwheelsize; i++) { + TAILQ_INIT(&callwheel[i]); + } #if defined(USERCONFIG) #if defined(USERCONFIG_BOOT) @@ -851,12 +866,15 @@ struct region_descriptor r_gdt, r_idt; extern struct i386tss common_tss; /* One tss per cpu */ #ifdef VM86 extern struct segment_descriptor common_tssd; +extern int private_tss; +extern u_int my_tr; #endif /* VM86 */ #else struct i386tss common_tss; #ifdef VM86 struct segment_descriptor common_tssd; -u_int private_tss = 0; /* flag indicating private tss */ +u_int private_tss; /* flag indicating private tss */ +u_int my_tr; /* which task register setting */ #endif /* VM86 */ #endif @@ -1504,6 +1522,10 @@ init386(first) common_tss.tss_ioopt = (sizeof common_tss) << 16; gsel_tss = GSEL(GPROC0_SEL, SEL_KPL); ltr(gsel_tss); +#ifdef VM86 + private_tss = 0; + my_tr = GPROC0_SEL; +#endif dblfault_tss.tss_esp = dblfault_tss.tss_esp0 = dblfault_tss.tss_esp1 = dblfault_tss.tss_esp2 = (int) &dblfault_stack[sizeof(dblfault_stack)]; |