1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-14 10:09:48 +00:00

Another round of merge.

(1) Bug fix (pass boot drive):

	pc98/boot/biosboot/boot2.S

(2) Delete code for unsupported high-resolution modes and move old
    Epson notebook code to epsonio.h:

  	pc98/boot/biosboot/io.c
	pc98/i386/vm_machdep.c
	pc98/pc98/fd.c
	pc98/pc98/pc98.c
	pc98/pc98/pc98.h
	pc98/pc98/epsonio.h (new)

(3) Change aic driver so that PCMCIA cards (I/O port same as PC/AT)
    and PC-9801-100 cards can be selected with a flag in kernel config
    file:

	pc98/pc98/aic6360.c
	pc98/pc98/aic_98.h (new)

(4) Fix wcd entry (it was broken).  Delete mcd, it doesn't work on
    98.  Change aic entry according to above:

	pc98/conf/GENERIC98

(5) Move pc98_machdep.c to top of files in pc98/pc98:

	pc98/conf/files.pc98

(6) Delete empty lines:

	pc98/i386/locore.s

(7) Fix (it didn't work if I586 was specified):

	pc98/pc98/clock.c

(8) Staticize:

	pc98/pc98/pc98_machdep.c

(9) Enable workaround for Cyrix bug for 5x86 also:

	pc98/i386/machdep.c
	pc98/i386/trap.c

All the above deletes this file too:

	pc98/i386/pmap.c

(phew!)
Submitted by:	The FreeBSD(98) Development Team
This commit is contained in:
Satoshi Asami 1996-10-23 07:25:35 +00:00
parent ad5123aab3
commit 4f3d818c12
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=19122
40 changed files with 703 additions and 3540 deletions

View File

@ -3,7 +3,7 @@
# Makefile.i386 -- with config changes.
# Copyright 1990 W. Jolitz
# from: @(#)Makefile.i386 7.1 5/10/91
# $Id: Makefile.pc98,v 1.5 1996/09/07 02:13:25 asami Exp $
# $Id: Makefile.pc98,v 1.6 1996/10/09 21:45:45 asami Exp $
#
# Makefile for FreeBSD
#
@ -29,16 +29,6 @@ S= ../..
PC98= ${S}/pc98
I386= ${S}/i386
CWARNFLAGS?= -W -Wreturn-type -Wcomment -Wredundant-decls -Wimplicit \
-Wnested-externs -Wstrict-prototypes -Wmissing-prototypes \
-Winline -Wunused -Wpointer-arith
#
# The following flags are next up for working on:
# -Wall
#
# When working on removing warnings from code, the `-Werror' flag should be
# of material assistance.
#
COPTFLAGS?=-O
INCLUDES= -nostdinc -I- -I. -I$S
# This hack is to allow kernel compiles to succeed on machines w/out srcdist
@ -190,6 +180,8 @@ vnode_if.c: $S/kern/vnode_if.sh $S/kern/vnode_if.src
vnode_if.h: $S/kern/vnode_if.sh $S/kern/vnode_if.src
sh $S/kern/vnode_if.sh $S/kern/vnode_if.src
.include <bsd.kern.mk>
%RULES
# DO NOT DELETE THIS LINE -- make depend uses it

View File

@ -3,7 +3,7 @@
#
# modified for PC-9801
#
# $Id: files.i386,v 1.140 1996/09/11 19:53:30 phk Exp $
# $Id: files.pc98,v 1.7 1996/09/12 11:09:18 asami Exp $
#
aic7xxx_asm optional ahc device-driver \
dependency "$S/dev/aic7xxx/aic7xxx_asm.c" \
@ -50,12 +50,12 @@ i386/i386/in_cksum.c optional inet
# now normal.
# i386/i386/locore.s standard
pc98/i386/machdep.c standard
pc98/pc98/pc98_machdep.c standard
i386/i386/math_emulate.c optional math_emulate
i386/i386/mem.c standard
pc98/i386/microtime.s standard
i386/i386/perfmon.c optional perfmon profiling-routine
i386/i386/perfmon.c optional perfmon
pc98/i386/pmap.c standard
i386/i386/pmap.c standard
i386/i386/procfs_machdep.c standard
i386/i386/support.s standard
i386/i386/swtch.s standard
@ -82,6 +82,7 @@ i386/ibcs2/ibcs2_errno.c optional ibcs2
i386/ibcs2/ibcs2_sysent.c optional ibcs2
i386/ibcs2/ibcs2_sysvec.c optional ibcs2
i386/ibcs2/imgact_coff.c optional ibcs2
pc98/pc98/pc98_machdep.c standard
pc98/pc98/bs/bs.c optional bs device-driver
pc98/pc98/bs/bsfunc.c optional bs device-driver
pc98/pc98/bs/bshw.c optional bs device-driver

View File

@ -1,4 +1,4 @@
# $Id: options.pc98,v 1.4 1996/09/12 11:09:21 asami Exp $
# $Id: options.pc98,v 1.5 1996/10/09 21:45:47 asami Exp $
BOUNCEPAGES opt_bounce.h
USER_LDT
MATH_EMULATE opt_math_emulate.h
@ -18,6 +18,8 @@ COMCONSOLE opt_comconsole.h
COM_ESP opt_sio.h
COM_MULTIPORT opt_sio.h
DSI_SOFT_MODEM opt_sio.h
I586_CTR_GUPROF opt_i586_guprof.h
I586_PMC_GUPROF opt_i586_guprof.h
FAT_CURSOR opt_pcvt.h
PCVT_FREEBSD opt_pcvt.h
PCVT_SCANSET opt_pcvt.h
@ -30,6 +32,15 @@ CLK_CALIBRATION_LOOP opt_clock.h
CLK_USE_I8254_CALIBRATION opt_clock.h
CLK_USE_I586_CALIBRATION opt_clock.h
I386_CPU opt_cpu.h
I486_CPU opt_cpu.h
I586_CPU opt_cpu.h
I686_CPU opt_cpu.h
I586_FAST_BCOPY opt_temporary.h
I586_OPTIMIZED_BCOPY opt_temporary.h
I586_OPTIMIZED_BZERO opt_temporary.h
SC_KBD_PROBE_WORKS opt_syscons.h
SC_SPLASH_SCREEN opt_syscons.h
MAXCONS opt_syscons.h

View File

@ -1,4 +1,4 @@
# $Id: Makefile,v 1.2 1996/07/23 07:45:33 asami Exp $
# $Id: Makefile,v 1.3 1996/09/12 11:08:41 asami Exp $
#
PROG= boot
@ -8,17 +8,34 @@ SRCS+= probe_keyboard.c io.c disk.c sys.c
BINDIR= /usr/mdec
BINMODE= 444
CFLAGS= -O2 \
CFLAGS= -O2 -malign-functions=0 -malign-jumps=0 -malign-loops=0 \
-DPC98 -DBOOTWAIT=${BOOTWAIT} -DTIMEOUT=${TIMEOUT}
CFLAGS+= -DBOOTSEG=${BOOTSEG} -DBOOTSTACK=${BOOTSTACK}
CFLAGS+= -DCOMCONSOLE=0x30 -DCOMCONSOLE_CLK=16 -DCOMCONSOLE_MODE=0x0c
CFLAGS+= ${CWARNFLAGS}
# Probe the keyboard and use the serial console if the keyboard isn't found.
#CFLAGS+= -DPROBE_KEYBOARD
.if defined(BOOT_PROBE_KEYBOARD)
CFLAGS+= -DPROBE_KEYBOARD
.endif
# Force use of the serial console (after probing the keyboard if
# PROBE_KEYBOARD is defined).
#CFLAGS+= -DFORCE_COMCONSOLE
# Probe the keyboard lock and use the serial console if the keyboard is locked.
.if defined(BOOT_PROBE_KEYBOARD_LOCK)
CFLAGS+= -DPROBE_KEYBOARD_LOCK
.endif
# Force use of the serial console.
.if defined(BOOT_FORCE_COMCONSOLE)
CFLAGS+= -DFORCE_COMCONSOLE
.endif
# By default, if a serial port is going to be used as console, use COM1
# (aka /dev/ttyd0).
BOOT_COMCONSOLE_PORT?=0x30
BOOT_COMCONSOLE_CLK?=16
BOOT_COMCONSOLE_MODE=0x0c
CFLAGS+= -DCOMCONSOLE=${BOOT_COMCONSOLE_PORT} \
-DCOMCONSOLE_CLK=${BOOT_COMCONSOLE_CLK} \
-DCOMCONSOLE_MODE=${BOOT_COMCONSOLE_MODE}
# Enable code to take the default boot string from a fixed location on the
# disk. See nextboot(8) and README.386BSD for more info.
@ -96,4 +113,5 @@ install:
ln -s boot2 boot$${i} ; ) \
done
.include <bsd.kern.mk>
.include <bsd.prog.mk>

View File

@ -24,7 +24,7 @@
* the rights to redistribute these changes.
*
* from: Mach, [92/04/03 16:51:14 rvb]
* $Id: boot.c,v 1.4 1996/09/12 11:08:45 asami Exp $
* $Id: boot.c,v 1.5 1996/10/09 21:45:21 asami Exp $
*/
@ -56,6 +56,9 @@ WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include <a.out.h>
#include <sys/reboot.h>
#include <machine/bootinfo.h>
#ifdef PROBE_KEYBOARD_LOCK
#include <machine/cpufunc.h>
#endif
#define ouraddr (BOOTSEG << 4) /* XXX */
@ -86,6 +89,17 @@ boot(int drive)
}
#endif
#ifndef PC98
/* notyet */
#ifdef PROBE_KEYBOARD_LOCK
if (!(inb(0x64) & 0x10)) {
init_serial();
loadflags |= RB_SERIAL;
printf("\nKeyboard locked.");
}
#endif
#endif
#ifdef FORCE_COMCONSOLE
init_serial();
loadflags |= RB_SERIAL;

View File

@ -24,7 +24,7 @@
* the rights to redistribute these changes.
*
* from: Mach, Revision 2.2 92/04/04 11:35:03 rpd
* $Id: boot.h,v 1.13 1996/09/14 07:38:14 bde Exp $
* $Id: boot.h,v 1.3 1996/10/09 21:45:24 asami Exp $
*/
#include <sys/param.h>
@ -71,7 +71,6 @@ void boot2(void);
int devopen(void);
void devread(char *iodest, int sector, int cnt);
char * Bread(int dosdev, int sector);
int badsect(int dosdev, int sector);
/* io.c */
void gateA20(void);

View File

@ -172,6 +172,7 @@ ENTRY(boot2)
movl %esp, EXT(dflt_name)
#endif
movb 0x11584, %dl
movzbl %dl, %edx /* discard head (%dh) and random high bits */
pushl %edx
call EXT(boot)

View File

@ -24,7 +24,7 @@
* the rights to redistribute these changes.
*
* from: Mach, Revision 2.2 92/04/04 11:35:49 rpd
* $Id: disk.c,v 1.3 1996/09/12 11:08:53 asami Exp $
* $Id: disk.c,v 1.4 1996/10/09 21:45:26 asami Exp $
*/
/*
@ -79,6 +79,7 @@ static int ra_dev;
static int ra_end;
static int ra_first;
static int badsect(int sector);
int
devopen(void)
@ -196,7 +197,7 @@ devopen(void)
break;
}
i += 2;
} while (i < 10 && i < dl->d_nsectors);
} while (i < 10 && (unsigned)i < dl->d_nsectors);
if (!do_bad144)
printf("Bad bad sector table\n");
else
@ -222,7 +223,7 @@ devread(char *iodest, int sector, int cnt)
for (offset = 0; offset < cnt; offset += BPS)
{
dosdev_copy = dosdev;
p = Bread(dosdev_copy, badsect(dosdev_copy, sector++));
p = Bread(dosdev_copy, badsect(sector++));
bcopy(p, iodest+offset, BPS);
}
}
@ -253,7 +254,8 @@ Bread(int dosdev, int sector)
nsec = 1;
twiddle();
while (biosread(dosdev, cyl, head, sec, nsec, ra_buf) != 0) {
printf("Error: C:%d H:%d S:%d\n", cyl, head, sec);
printf("Error: D:0x%x C:%d H:%d S:%d\n",
dosdev, cyl, head, sec);
twiddle();
}
}
@ -264,8 +266,8 @@ Bread(int dosdev, int sector)
return (ra_buf + (sector - ra_first) * BPS);
}
int
badsect(int dosdev, int sector)
static int
badsect(int sector)
{
#if defined(DO_BAD144) && !defined(RAWBOOT)
int i;

View File

@ -24,7 +24,7 @@
* the rights to redistribute these changes.
*
* from: Mach, Revision 2.2 92/04/04 11:35:57 rpd
* $Id: io.c,v 1.3 1996/09/12 11:08:55 asami Exp $
* $Id: io.c,v 1.4 1996/10/09 21:45:29 asami Exp $
*/
#include "boot.h"
@ -350,9 +350,9 @@ void machine_check(void)
u_char epson_machine_id = *(unsigned char *)(0x11624);
/* PC98_SYSTEM_PARAMETER(0x501) */
ret = ((*(unsigned char*)0x11501) & 0x08) ? M_HIGHRESO : M_NORMAL;
ret = ((*(unsigned char*)0x11501) & 0x08) >> 3;
/* wait V-SYNC */
/* Wait V-SYNC */
while (inb(0x60) & 0x20) {}
while (!(inb(0x60) & 0x20)) {}
@ -390,7 +390,6 @@ void machine_check(void)
case 0x22: /* note W */
case 0x27: /* note AE */
case 0x2a: /* note WR */
/*case 0x2: /* note AR */
ret |= M_NOTE;
break;
default:

View File

@ -1,4 +1,4 @@
# $Id: Makefile,v 1.1 1996/09/11 19:25:11 phk Exp $
# $Id: Makefile,v 1.1 1996/09/12 11:09:14 asami Exp $
#
PROG= boot
@ -11,20 +11,37 @@ SRCS+= probe_keyboard.c io.c disk.c sys.c
BINDIR= /usr/mdec
BINMODE= 444
CFLAGS= -O2 \
CFLAGS= -O2 -malign-functions=0 -malign-jumps=0 -malign-loops=0 \
-DPC98 \
-DRAWBOOT \
-I${.CURDIR}/../biosboot \
-DBOOTWAIT=${BOOTWAIT} -DTIMEOUT=${TIMEOUT}
CFLAGS+= -DCOMCONSOLE=0x30 -DCOMCONSOLE_CLK=16 -DCOMCONSOLE_MODE=0x0c
CFLAGS+= -DBOOTSEG=${BOOTSEG} -DBOOTSTACK=${BOOTSTACK}
CFLAGS+= ${CWARNFLAGS}
# Probe the keyboard and use the serial console if the keyboard isn't found.
#CFLAGS+= -DPROBE_KEYBOARD
.if defined(BOOT_PROBE_KEYBOARD)
CFLAGS+= -DPROBE_KEYBOARD
.endif
# Force use of the serial console (after probing the keyboard if
# PROBE_KEYBOARD is defined).
#CFLAGS+= -DFORCE_COMCONSOLE
# Probe the keyboard lock and use the serial console if the keyboard is locked.
.if defined(BOOT_PROBE_KEYBOARD_LOCK)
CFLAGS+= -DPROBE_KEYBOARD_LOCK
.endif
# Force use of the serial console.
.if defined(BOOT_FORCE_COMCONSOLE)
CFLAGS+= -DFORCE_COMCONSOLE
.endif
# By default, if a serial port is going to be used as console, use COM1
# (aka /dev/ttyd0).
BOOT_COMCONSOLE_PORT?=0x30
BOOT_COMCONSOLE_CLK?=16
BOOT_COMCONSOLE_MODE=0x0c
CFLAGS+= -DCOMCONSOLE=${BOOT_COMCONSOLE_PORT} \
-DCOMCONSOLE_CLK=${BOOT_COMCONSOLE_CLK} \
-DCOMCONSOLE_MODE=${BOOT_COMCONSOLE_MODE}
# Enable code to take the default boot string from a fixed location on the
# disk. See nextboot(8) and README.386BSD for more info.
@ -75,10 +92,11 @@ boot.nohdr: boot.strip
rawboot: boot.nohdr
dd if=boot.nohdr of=rawboot bs=8k count=1 conv=sync
all: rawboot
all: rawboot
install:
${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE}\
rawboot ${DESTDIR}${BINDIR}/rawboot
.include <bsd.kern.mk>
.include <bsd.prog.mk>

View File

@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)isa.h 5.7 (Berkeley) 5/9/91
* $Id: pc98.h,v 1.4 1996/09/12 11:09:54 asami Exp $
* $Id: pc98.h,v 1.5 1996/10/09 21:46:34 asami Exp $
*/
#ifndef _PC98_PC98_PC98_H_
@ -193,7 +193,6 @@
#define M_H98 0x0020
#define M_NOTE 0x0040
#define M_NORMAL 0x1000
#define M_HIGHRESO 0x2000
#define M_8M 0x8000
#if defined(KERNEL) && !defined(LOCORE)
@ -214,52 +213,6 @@ extern unsigned char pc98_system_parameter[]; /* in locore.c */
# define PC98_TYPE_CHECK(x) ((pc98_machine_type & (x)) == (x))
#include <machine/spl.h>
static inline u_char
epson_inb(u_int port)
{
u_char data;
outb(0x43f, 0x42);
data = inb(port);
outb(0x43f, 0x40);
return (data);
}
static inline void
epson_outb(u_int port, u_char data)
{
outb(0x43f, 0x42);
outb(port,data);
outb(0x43f, 0x40);
}
static inline void
epson_insw(u_int port, void *addr, size_t cnt)
{
int s;
s = splbio();
outb(0x43f, 0x42);
disable_intr();
insw((u_int)port, (void *)addr, (size_t)cnt);
outb(0x43f, 0x40);
splx(s);
}
static inline void
epson_outsw(u_int port, void *addr, size_t cnt)
{
int s;
s = splbio();
outb(0x43f, 0x42);
disable_intr();
outsw((u_int)port, (void *)addr, (size_t)cnt);
outb(0x43f, 0x40);
splx(s);
}
#endif /* KERNEL */
/*

View File

@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)clock.c 7.2 (Berkeley) 5/12/91
* $Id: clock.c,v 1.6 1996/10/09 19:47:43 bde Exp $
* $Id: clock.c,v 1.7 1996/10/09 21:46:11 asami Exp $
*/
/*
@ -46,7 +46,7 @@
/*
* modified for PC98
* $Id: clock.c,v 1.6 1996/10/09 19:47:43 bde Exp $
* $Id: clock.c,v 1.7 1996/10/09 21:46:11 asami Exp $
*/
/*
@ -1127,6 +1127,32 @@ cpu_initclocks()
writertc(RTC_STATUSA, rtc_statusa);
writertc(RTC_STATUSB, RTCSB_24HR);
/* Don't bother enabling the statistics clock. */
if (statclock_disable)
return;
diag = rtcin(RTC_DIAG);
if (diag != 0)
printf("RTC BIOS diagnostic error %b\n", diag, RTCDG_BITS);
register_intr(/* irq */ 8, /* XXX id */ 1, /* flags */ 0,
/* XXX */ (inthand2_t *)rtcintr, &stat_imask,
/* unit */ 0);
INTREN(IRQ8);
writertc(RTC_STATUSB, rtc_statusb);
#endif
}
void
setstatclockrate(int newhz)
{
#ifndef PC98
if (newhz == RTC_PROFRATE)
rtc_statusa = RTCSA_DIVIDER | RTCSA_PROF;
else
rtc_statusa = RTCSA_DIVIDER | RTCSA_NOPROF;
writertc(RTC_STATUSA, rtc_statusa);
#endif
}
static int
sysctl_machdep_i8254_freq SYSCTL_HANDLER_ARGS
{
@ -1193,29 +1219,3 @@ sysctl_machdep_i586_freq SYSCTL_HANDLER_ARGS
SYSCTL_PROC(_machdep, OID_AUTO, i586_freq, CTLTYPE_INT | CTLFLAG_RW,
0, sizeof(u_int), sysctl_machdep_i586_freq, "I", "");
#endif /* defined(I586_CPU) || defined(I686_CPU) */
/* Don't bother enabling the statistics clock. */
if (statclock_disable)
return;
diag = rtcin(RTC_DIAG);
if (diag != 0)
printf("RTC BIOS diagnostic error %b\n", diag, RTCDG_BITS);
register_intr(/* irq */ 8, /* XXX id */ 1, /* flags */ 0,
/* XXX */ (inthand2_t *)rtcintr, &stat_imask,
/* unit */ 0);
INTREN(IRQ8);
writertc(RTC_STATUSB, rtc_statusb);
#endif
}
void
setstatclockrate(int newhz)
{
#ifndef PC98
if (newhz == RTC_PROFRATE)
rtc_statusa = RTCSA_DIVIDER | RTCSA_PROF;
else
rtc_statusa = RTCSA_DIVIDER | RTCSA_NOPROF;
writertc(RTC_STATUSA, rtc_statusa);
#endif
}

View File

@ -43,7 +43,7 @@
* SUCH DAMAGE.
*
* from: @(#)fd.c 7.4 (Berkeley) 5/25/91
* $Id: fd.c,v 1.5 1996/09/03 10:23:25 asami Exp $
* $Id: fd.c,v 1.6 1996/09/10 09:37:50 asami Exp $
*
*/
@ -72,6 +72,7 @@
#include <sys/dkstat.h>
#ifdef PC98
#include <pc98/pc98/pc98.h>
#include <pc98/pc98/epsonio.h>
#include <i386/isa/isa_device.h>
#include <pc98/pc98/fdreg.h>
#include <pc98/pc98/fdc.h>

View File

@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)clock.c 7.2 (Berkeley) 5/12/91
* $Id: clock.c,v 1.6 1996/10/09 19:47:43 bde Exp $
* $Id: clock.c,v 1.7 1996/10/09 21:46:11 asami Exp $
*/
/*
@ -46,7 +46,7 @@
/*
* modified for PC98
* $Id: clock.c,v 1.6 1996/10/09 19:47:43 bde Exp $
* $Id: clock.c,v 1.7 1996/10/09 21:46:11 asami Exp $
*/
/*
@ -1127,6 +1127,32 @@ cpu_initclocks()
writertc(RTC_STATUSA, rtc_statusa);
writertc(RTC_STATUSB, RTCSB_24HR);
/* Don't bother enabling the statistics clock. */
if (statclock_disable)
return;
diag = rtcin(RTC_DIAG);
if (diag != 0)
printf("RTC BIOS diagnostic error %b\n", diag, RTCDG_BITS);
register_intr(/* irq */ 8, /* XXX id */ 1, /* flags */ 0,
/* XXX */ (inthand2_t *)rtcintr, &stat_imask,
/* unit */ 0);
INTREN(IRQ8);
writertc(RTC_STATUSB, rtc_statusb);
#endif
}
void
setstatclockrate(int newhz)
{
#ifndef PC98
if (newhz == RTC_PROFRATE)
rtc_statusa = RTCSA_DIVIDER | RTCSA_PROF;
else
rtc_statusa = RTCSA_DIVIDER | RTCSA_NOPROF;
writertc(RTC_STATUSA, rtc_statusa);
#endif
}
static int
sysctl_machdep_i8254_freq SYSCTL_HANDLER_ARGS
{
@ -1193,29 +1219,3 @@ sysctl_machdep_i586_freq SYSCTL_HANDLER_ARGS
SYSCTL_PROC(_machdep, OID_AUTO, i586_freq, CTLTYPE_INT | CTLFLAG_RW,
0, sizeof(u_int), sysctl_machdep_i586_freq, "I", "");
#endif /* defined(I586_CPU) || defined(I686_CPU) */
/* Don't bother enabling the statistics clock. */
if (statclock_disable)
return;
diag = rtcin(RTC_DIAG);
if (diag != 0)
printf("RTC BIOS diagnostic error %b\n", diag, RTCDG_BITS);
register_intr(/* irq */ 8, /* XXX id */ 1, /* flags */ 0,
/* XXX */ (inthand2_t *)rtcintr, &stat_imask,
/* unit */ 0);
INTREN(IRQ8);
writertc(RTC_STATUSB, rtc_statusb);
#endif
}
void
setstatclockrate(int newhz)
{
#ifndef PC98
if (newhz == RTC_PROFRATE)
rtc_statusa = RTCSA_DIVIDER | RTCSA_PROF;
else
rtc_statusa = RTCSA_DIVIDER | RTCSA_NOPROF;
writertc(RTC_STATUSA, rtc_statusa);
#endif
}

View File

@ -11,7 +11,7 @@
# device lines is present in the ./LINT configuration file. If you are
# in doubt as to the purpose or necessity of a line, check first in LINT.
#
# $Id: GENERIC98,v 1.5 1996/09/12 11:09:16 asami Exp $
# $Id: GENERIC98,v 1.6 1996/10/09 21:45:41 asami Exp $
# GENERIC98 -- Generic PC98 machine with WD/SBIC55 disks
@ -54,21 +54,18 @@ options COM_MULTIPORT
#
#options "IBM_486SLC" # IBM486SLC/SLC2 support
#options "CYRIX_486DLC" # Cyrix 486DLC/SLC/DLC2/SLC2 support
#option "CYRIX_5X86" # Cyrix 5x86 support
#options "CYRIX_5X86" # Cyrix 5x86 support
#options SUSP_HLT # CPU enters suspend mode when HALT
#options "DISABLE_5X86_LSSER" # Load-Store reordering enable
#
# sbic55.c.new
#
#options SCSI_SYNC # synchronous transfer mode
#options FORCE_BUSMASTER
#options "HA55BS_ID=0"
#
# IBM-PC HDD support
#options COMPAT_ATDISK
#
# FreeBSD(98)-current is a *TEST VERSION*.
# It is highly recomended to compile with following options, and to
@ -97,7 +94,7 @@ disk wd0 at wdc0 drive 0
options ATAPI # Enable ATAPI support for IDE bus
options ATAPI_STATIC #Don't do it as an LKM
device wcd #IDE CD-ROM
device wcd0 #IDE CD-ROM
# A single entry for any of these controllers (ncr, ahb, ahc) is sufficient
# for any number of installed devices.
@ -105,21 +102,20 @@ controller ncr0
controller ahc0
controller sbic0 at isa? port "IO_SCSI" bio irq 5 drq 3 vector sbicintr
# sbic55.c.new
#controller sbic0 at isa? port "IO_SCSI" bio irq 5 drq 3 flags 0xff vector sbicintr
controller aic0 at isa? port 0x1840 bio irq 5 vector aicintr
controller aic0 at isa? port 0x1840 bio irq 5 flags 0x10000 vector aicintr
controller scbus0
device sd0
device od0 #See LINT for possible `od' options.
device st0
device cd0 #Only need one of these, the code dynamically grows
device od0
device mcd0 at isa? port 0x300 bio irq 10 vector mcdintr
controller matcd0 at isa? port? bio
# syscons is the default console driver, resembling an SCO console

View File

@ -11,7 +11,7 @@
# device lines is present in the ./LINT configuration file. If you are
# in doubt as to the purpose or necessity of a line, check first in LINT.
#
# $Id: GENERIC98,v 1.5 1996/09/12 11:09:16 asami Exp $
# $Id: GENERIC98,v 1.6 1996/10/09 21:45:41 asami Exp $
# GENERIC98 -- Generic PC98 machine with WD/SBIC55 disks
@ -54,21 +54,18 @@ options COM_MULTIPORT
#
#options "IBM_486SLC" # IBM486SLC/SLC2 support
#options "CYRIX_486DLC" # Cyrix 486DLC/SLC/DLC2/SLC2 support
#option "CYRIX_5X86" # Cyrix 5x86 support
#options "CYRIX_5X86" # Cyrix 5x86 support
#options SUSP_HLT # CPU enters suspend mode when HALT
#options "DISABLE_5X86_LSSER" # Load-Store reordering enable
#
# sbic55.c.new
#
#options SCSI_SYNC # synchronous transfer mode
#options FORCE_BUSMASTER
#options "HA55BS_ID=0"
#
# IBM-PC HDD support
#options COMPAT_ATDISK
#
# FreeBSD(98)-current is a *TEST VERSION*.
# It is highly recomended to compile with following options, and to
@ -97,7 +94,7 @@ disk wd0 at wdc0 drive 0
options ATAPI # Enable ATAPI support for IDE bus
options ATAPI_STATIC #Don't do it as an LKM
device wcd #IDE CD-ROM
device wcd0 #IDE CD-ROM
# A single entry for any of these controllers (ncr, ahb, ahc) is sufficient
# for any number of installed devices.
@ -105,21 +102,20 @@ controller ncr0
controller ahc0
controller sbic0 at isa? port "IO_SCSI" bio irq 5 drq 3 vector sbicintr
# sbic55.c.new
#controller sbic0 at isa? port "IO_SCSI" bio irq 5 drq 3 flags 0xff vector sbicintr
controller aic0 at isa? port 0x1840 bio irq 5 vector aicintr
controller aic0 at isa? port 0x1840 bio irq 5 flags 0x10000 vector aicintr
controller scbus0
device sd0
device od0 #See LINT for possible `od' options.
device st0
device cd0 #Only need one of these, the code dynamically grows
device od0
device mcd0 at isa? port 0x300 bio irq 10 vector mcdintr
controller matcd0 at isa? port? bio
# syscons is the default console driver, resembling an SCO console

View File

@ -3,7 +3,7 @@
# Makefile.i386 -- with config changes.
# Copyright 1990 W. Jolitz
# from: @(#)Makefile.i386 7.1 5/10/91
# $Id: Makefile.pc98,v 1.5 1996/09/07 02:13:25 asami Exp $
# $Id: Makefile.pc98,v 1.6 1996/10/09 21:45:45 asami Exp $
#
# Makefile for FreeBSD
#
@ -29,16 +29,6 @@ S= ../..
PC98= ${S}/pc98
I386= ${S}/i386
CWARNFLAGS?= -W -Wreturn-type -Wcomment -Wredundant-decls -Wimplicit \
-Wnested-externs -Wstrict-prototypes -Wmissing-prototypes \
-Winline -Wunused -Wpointer-arith
#
# The following flags are next up for working on:
# -Wall
#
# When working on removing warnings from code, the `-Werror' flag should be
# of material assistance.
#
COPTFLAGS?=-O
INCLUDES= -nostdinc -I- -I. -I$S
# This hack is to allow kernel compiles to succeed on machines w/out srcdist
@ -190,6 +180,8 @@ vnode_if.c: $S/kern/vnode_if.sh $S/kern/vnode_if.src
vnode_if.h: $S/kern/vnode_if.sh $S/kern/vnode_if.src
sh $S/kern/vnode_if.sh $S/kern/vnode_if.src
.include <bsd.kern.mk>
%RULES
# DO NOT DELETE THIS LINE -- make depend uses it

View File

@ -3,7 +3,7 @@
#
# modified for PC-9801
#
# $Id: files.i386,v 1.140 1996/09/11 19:53:30 phk Exp $
# $Id: files.pc98,v 1.7 1996/09/12 11:09:18 asami Exp $
#
aic7xxx_asm optional ahc device-driver \
dependency "$S/dev/aic7xxx/aic7xxx_asm.c" \
@ -50,12 +50,12 @@ i386/i386/in_cksum.c optional inet
# now normal.
# i386/i386/locore.s standard
pc98/i386/machdep.c standard
pc98/pc98/pc98_machdep.c standard
i386/i386/math_emulate.c optional math_emulate
i386/i386/mem.c standard
pc98/i386/microtime.s standard
i386/i386/perfmon.c optional perfmon profiling-routine
i386/i386/perfmon.c optional perfmon
pc98/i386/pmap.c standard
i386/i386/pmap.c standard
i386/i386/procfs_machdep.c standard
i386/i386/support.s standard
i386/i386/swtch.s standard
@ -82,6 +82,7 @@ i386/ibcs2/ibcs2_errno.c optional ibcs2
i386/ibcs2/ibcs2_sysent.c optional ibcs2
i386/ibcs2/ibcs2_sysvec.c optional ibcs2
i386/ibcs2/imgact_coff.c optional ibcs2
pc98/pc98/pc98_machdep.c standard
pc98/pc98/bs/bs.c optional bs device-driver
pc98/pc98/bs/bsfunc.c optional bs device-driver
pc98/pc98/bs/bshw.c optional bs device-driver

View File

@ -1,4 +1,4 @@
$Id: majors.pc98,v 1.2 1996/07/23 07:45:50 asami Exp $
$Id: majors.pc98,v 1.3 1996/09/03 10:23:13 asami Exp $
Hopefully, this list will one day be obsoleted by DEVFS, but for now
this is the current allocation of device major numbers.
@ -35,7 +35,7 @@ blkdev name comments
19 wcdb ATAPI CDROM client of "ata"
20 od SCSI "magneto-optical" disk
21 ccd concatenated disk
22 gd Geometry disk.
chrdev name comments
0 cn console
1 ctty /dev/tty
@ -115,3 +115,4 @@ chrdev name comments
75 stli Stallion (intelligent cdk based) (gerg@stallion.oz.au)
76 scc IBM Smart Capture Card (ohashi@mickey.ai.kyutech.ac.jp)
77 cyy Cyclades Ye/PCI serial card
78 gd Geometry disk

View File

@ -1,4 +1,4 @@
# $Id: options.pc98,v 1.4 1996/09/12 11:09:21 asami Exp $
# $Id: options.pc98,v 1.5 1996/10/09 21:45:47 asami Exp $
BOUNCEPAGES opt_bounce.h
USER_LDT
MATH_EMULATE opt_math_emulate.h
@ -18,6 +18,8 @@ COMCONSOLE opt_comconsole.h
COM_ESP opt_sio.h
COM_MULTIPORT opt_sio.h
DSI_SOFT_MODEM opt_sio.h
I586_CTR_GUPROF opt_i586_guprof.h
I586_PMC_GUPROF opt_i586_guprof.h
FAT_CURSOR opt_pcvt.h
PCVT_FREEBSD opt_pcvt.h
PCVT_SCANSET opt_pcvt.h
@ -30,6 +32,15 @@ CLK_CALIBRATION_LOOP opt_clock.h
CLK_USE_I8254_CALIBRATION opt_clock.h
CLK_USE_I586_CALIBRATION opt_clock.h
I386_CPU opt_cpu.h
I486_CPU opt_cpu.h
I586_CPU opt_cpu.h
I686_CPU opt_cpu.h
I586_FAST_BCOPY opt_temporary.h
I586_OPTIMIZED_BCOPY opt_temporary.h
I586_OPTIMIZED_BZERO opt_temporary.h
SC_KBD_PROBE_WORKS opt_syscons.h
SC_SPLASH_SCREEN opt_syscons.h
MAXCONS opt_syscons.h

View File

@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)locore.s 7.3 (Berkeley) 5/13/91
* $Id: locore.s,v 1.3 1996/10/09 19:47:37 bde Exp $
* $Id: locore.s,v 1.4 1996/10/09 21:45:53 asami Exp $
*
* originally from: locore.s, by William F. Jolitz
*
@ -334,7 +334,6 @@ _pc98_system_parameter:
/* now running relocated at KERNBASE where the system is linked to run */
begin:
/* set up bootstrap stack */
movl $_kstack+UPAGES*PAGE_SIZE,%esp /* bootstrap stack end location */
xorl %eax,%eax /* mark end of frames */

View File

@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* from: @(#)machdep.c 7.4 (Berkeley) 6/3/91
* $Id: machdep.c,v 1.8 1996/09/12 11:09:26 asami Exp $
* $Id: machdep.c,v 1.9 1996/10/09 21:45:56 asami Exp $
*/
#include "npx.h"
@ -1063,7 +1063,7 @@ init386(first)
setidt(11, &IDTVEC(missing), SDT_SYS386TGT, SEL_KPL, GSEL(GCODE_SEL, SEL_KPL));
setidt(12, &IDTVEC(stk), SDT_SYS386TGT, SEL_KPL, GSEL(GCODE_SEL, SEL_KPL));
setidt(13, &IDTVEC(prot), SDT_SYS386TGT, SEL_KPL, GSEL(GCODE_SEL, SEL_KPL));
#ifdef CYRIX_486DLC
#if defined(CYRIX_486DLC) || defined(CYRIX_5X86)
setidt(14, &IDTVEC(page), SDT_SYS386IGT, SEL_KPL, GSEL(GCODE_SEL, SEL_KPL));
#else
setidt(14, &IDTVEC(page), SDT_SYS386TGT, SEL_KPL, GSEL(GCODE_SEL, SEL_KPL));
@ -1140,6 +1140,7 @@ init386(first)
printf(
"BIOS basemem (%ldK) != RTC basemem (%dK), setting to BIOS value\n",
bootinfo.bi_basemem, biosbasemem);
biosbasemem = bootinfo.bi_basemem;
/*

File diff suppressed because it is too large Load Diff

View File

@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* from: @(#)trap.c 7.4 (Berkeley) 5/13/91
* $Id: trap.c,v 1.6 1996/09/07 02:13:36 asami Exp $
* $Id: trap.c,v 1.7 1996/09/12 11:09:36 asami Exp $
*/
/*
@ -77,13 +77,12 @@
#include <machine/trap.h>
#include <machine/../isa/isa_device.h>
#include "isa.h"
#ifdef POWERFAIL_NMI
#include <sys/syslog.h>
#include <machine/clock.h>
#endif
#include "isa.h"
#include "npx.h"
int (*pmath_emulate) __P((struct trapframe *));
@ -92,7 +91,7 @@ extern void trap __P((struct trapframe frame));
extern int trapwrite __P((unsigned addr));
extern void syscall __P((struct trapframe frame));
#ifdef CYRIX_486DLC
#if defined(CYRIX_486DLC) || defined(CYRIX_5X86)
static int trap_pfault __P((struct trapframe *, int, vm_offset_t));
#else
static int trap_pfault __P((struct trapframe *, int));
@ -193,14 +192,14 @@ trap(frame)
#ifdef DEBUG
u_long eva;
#endif
#ifdef CYRIX_486DLC
#if defined(CYRIX_486DLC) || defined(CYRIX_5X86)
vm_offset_t va;
#endif
type = frame.tf_trapno;
code = frame.tf_err;
#ifdef CYRIX_486DLC
#if defined(CYRIX_486DLC) || defined(CYRIX_5X86)
/* XXX:
* CYRIX 486 CPU FIX.
* If you use cyrix cpu, you often encouter strange signal 11's?
@ -211,7 +210,7 @@ trap(frame)
va = (vm_offset_t)(rcr2());
if( type == T_PAGEFLT && ( frame.tf_eflags & PSL_I ) )
asm("sti");
#endif /* CYRIX_486DLC */
#endif /* CYRIX_486DLC || CYRIX_5X86 */
if (ISPL(frame.tf_cs) == SEL_UPL) {
/* user trap */
@ -257,7 +256,7 @@ trap(frame)
break;
case T_PAGEFLT: /* page fault */
#ifdef CYRIX_486DLC
#if defined(CYRIX_486DLC) || defined(CYRIX_5X86)
i = trap_pfault(&frame, TRUE, va);
#else
i = trap_pfault(&frame, TRUE);
@ -333,7 +332,7 @@ trap(frame)
switch (type) {
case T_PAGEFLT: /* page fault */
#ifdef CYRIX_486DLC
#if defined(CYRIX_486DLC) || defined(CYRIX_5X86)
(void) trap_pfault(&frame, FALSE, va);
#else
(void) trap_pfault(&frame, FALSE);
@ -496,7 +495,7 @@ trap(frame)
* debugging code.
*/
static int
#ifdef CYRIX_486DLC
#if defined(CYRIX_486DLC) || defined(CYRIX_5X86)
trap_pfault(frame, usermode,faultva)
struct trapframe *frame;
int usermode;
@ -520,7 +519,7 @@ trap_pfault(frame, usermode)
else
ftype = VM_PROT_READ;
#ifdef CYRIX_486DLC
#if defined(CYRIX_486DLC) || defined(CYRIX_5X86)
eva = faultva;
#else
eva = rcr2();
@ -606,7 +605,7 @@ trap_pfault(frame, usermode)
#endif
int
#ifdef CYRIX_486DLC
#if defined(CYRIX_486DLC) || defined(CYRIX_5X86)
trap_pfault(frame, usermode,faultva)
struct trapframe *frame;
int usermode;
@ -625,7 +624,7 @@ trap_pfault(frame, usermode)
int eva;
struct proc *p = curproc;
#ifdef CYRIX_486DLC
#if defined(CYRIX_486DLC) || defined(CYRIX_5X86)
eva = faultva;
#else
eva = rcr2();

View File

@ -46,7 +46,7 @@
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
**
** $Id: userconfig.c,v 1.6 1996/09/12 11:09:38 asami Exp $
** $Id: userconfig.c,v 1.7 1996/10/09 21:46:01 asami Exp $
**/
/**
@ -116,7 +116,7 @@
#include <sys/kernel.h>
#include <sys/malloc.h>
#include <machine/clock.h>
#include <machine/cons.h>
#include <machine/md_var.h>
#include <i386/isa/isa_device.h>
@ -229,52 +229,14 @@ static DEV_INFO device_info[] = {
#ifdef PC98
{"sbic", "PC-9801-55 SCSI Interface", 0, CLS_STORAGE},
{"bs", "PC-9801-55 SCSI Interface", 0, CLS_STORAGE},
{"aic", "Adaptec 152x SCSI and compatible sound cards", 0, CLS_STORAGE},
{"ahc", "Adaptec 274x/284x/294x SCSI controller", 0, CLS_STORAGE},
{"aic", "Adaptec 152x SCSI and compatible sound cards", 0, CLS_STORAGE},
{"ncr", "NCR 53C810 SCSI controller", FLG_FIXED, CLS_STORAGE},
{"wdc", "IDE/ESDI/MFM disk controller", 0, CLS_STORAGE},
{"fdc", "Floppy disk controller", FLG_FIXED, CLS_STORAGE},
{"mcd", "Mitsumi CD-ROM", 0, CLS_STORAGE},
{"scd", "Sony CD-ROM", 0, CLS_STORAGE},
{"matcdc", "Matsushita/Panasonic/Creative CDROM", 0, CLS_STORAGE},
{"ed", "NS8390 Ethernet adapters", 0, CLS_NETWORK},
{"el", "3C501 Ethernet adapter", 0, CLS_NETWORK},
{"ep", "3C509 Ethernet adapter", 0, CLS_NETWORK},
{"fe", "Fujitsu MD86960A/MB869685A Ethernet adapters", 0, CLS_NETWORK},
{"fea", "DEC DEFEA EISA FDDI adapter", 0, CLS_NETWORK},
{"fxp", "Intel EtherExpress Pro/100B Ethernet adapter", 0, CLS_NETWORK},
{"ie", "AT&T Starlan 10 and EN100, 3C507, NI5210 Ethernet adapters",0,CLS_NETWORK},
{"ix", "Intel EtherExpress Ethernet adapter", 0, CLS_NETWORK},
{"le", "DEC Etherworks 2 and 3 Ethernet adapters", 0, CLS_NETWORK},
{"lnc", "Isolan, Novell NE2100/NE32-VL Ethernet adapters", 0,CLS_NETWORK},
{"vx", "3COM 3C590/3C595 Ethernet adapters", 0, CLS_NETWORK},
{"ze", "IBM/National Semiconductor PCMCIA Ethernet adapter",0, CLS_NETWORK},
{"zp", "3COM PCMCIA Etherlink III Ethernet adapter", 0, CLS_NETWORK},
{"de", "DEC DC21040 Ethernet adapter", FLG_FIXED, CLS_NETWORK},
{"fpa", "DEC DEFPA PCI FDDI adapter", FLG_FIXED, CLS_NETWORK},
{"sio", "8250/16450/16550 Serial port", 0, CLS_COMMS},
{"lpt", "Parallel printer port", 0, CLS_COMMS},
{"mse", "PC-9801 Bus Mouse", 0, CLS_INPUT},
{"sc", "Syscons console driver", FLG_FIXED, CLS_INPUT},
{"pcm", "PC-9801-86 Sound Board", 0, CLS_MMEDIA},
{"sb", "Soundblaster PCM (SB, SBPro, SB16, ProAudio Spectrum)",0,CLS_MMEDIA},
{"sbxvi", "Soundblaster 16", 0, CLS_MMEDIA},
{"sbmidi", "Soundblaster MIDI interface", 0, CLS_MMEDIA},
{"mss", "Microsoft Sound System", 0, CLS_MMEDIA},
{"opl", "OPL-2/3 FM, Soundblaster, SBPro, SB16, ProAudio Spectrum",0,CLS_MMEDIA},
{"mpu", "Roland MPU401 MIDI", 0, CLS_MMEDIA},
{"pca", "PC speaker PCM audio driver", FLG_FIXED, CLS_MMEDIA},
{"apm", "Advanced Power Management", FLG_FIXED, CLS_MISC},
{"npx", "Math coprocessor", FLG_INVISIBLE, CLS_MISC},
{"lkm", "Loadable PCI driver support", FLG_INVISIBLE, CLS_MISC},
{"vga", "Catchall PCI VGA driver", FLG_INVISIBLE, CLS_MISC},
{"chip", "PCI chipset support", FLG_INVISIBLE, CLS_MISC},
#else
{"bt", "Buslogic SCSI controller", 0, CLS_STORAGE},
{"ahc", "Adaptec 274x/284x/294x SCSI controller", 0, CLS_STORAGE},
@ -292,8 +254,13 @@ static DEV_INFO device_info[] = {
{"scd", "Sony CD-ROM", 0, CLS_STORAGE},
{"matcdc", "Matsushita/Panasonic/Creative CDROM", 0, CLS_STORAGE},
{"wt", "Wangtek/Archive QIC-02 Tape drive", 0, CLS_STORAGE},
#endif
#ifdef PC98
{"ed", "NS8390 Ethernet adapters", 0, CLS_NETWORK},
#else
{"ed", "NE1000,NE2000,3C503,WD/SMC80xx Ethernet adapters",0, CLS_NETWORK},
#endif
{"el", "3C501 Ethernet adapter", 0, CLS_NETWORK},
{"ep", "3C509 Ethernet adapter", 0, CLS_NETWORK},
{"fe", "Fujitsu MD86960A/MB869685A Ethernet adapters", 0, CLS_NETWORK},
@ -310,20 +277,31 @@ static DEV_INFO device_info[] = {
{"fpa", "DEC DEFPA PCI FDDI adapter", FLG_FIXED, CLS_NETWORK},
{"sio", "8250/16450/16550 Serial port", 0, CLS_COMMS},
#ifndef PC98
{"cx", "Cronyx/Sigma multiport sync/async adapter",0, CLS_COMMS},
{"rc", "RISCom/8 multiport async adapter", 0, CLS_COMMS},
{"cy", "Cyclades multiport async adapter", 0, CLS_COMMS},
#endif
{"lpt", "Parallel printer port", 0, CLS_COMMS},
{"nic", "ISDN driver", 0, CLS_COMMS},
{"nnic", "ISDN driver", 0, CLS_COMMS},
#ifndef PC98
{"gp", "National Instruments AT-GPIB/TNT driver", 0, CLS_COMMS},
#endif
#ifdef PC98
{"mse", "Bus Mouse", 0, CLS_INPUT},
#else
{"mse", "Microsoft Bus Mouse", 0, CLS_INPUT},
{"psm", "PS/2 Mouse", 0, CLS_INPUT},
#endif
{"joy", "Joystick", FLG_FIXED, CLS_INPUT},
{"vt", "PCVT console driver", FLG_FIXED, CLS_INPUT},
{"sc", "Syscons console driver", FLG_FIXED, CLS_INPUT},
#ifdef PC98
{"pcm", "PC-9801-86 Sound Board", 0, CLS_MMEDIA},
#endif
{"sb", "Soundblaster PCM (SB, SBPro, SB16, ProAudio Spectrum)",0,CLS_MMEDIA},
{"sbxvi", "Soundblaster 16", 0, CLS_MMEDIA},
{"sbmidi", "Soundblaster MIDI interface", 0, CLS_MMEDIA},
@ -347,7 +325,6 @@ static DEV_INFO device_info[] = {
{"lkm", "Loadable PCI driver support", FLG_INVISIBLE, CLS_MISC},
{"vga", "Catchall PCI VGA driver", FLG_INVISIBLE, CLS_MISC},
{"chip", "PCI chipset support", FLG_INVISIBLE, CLS_MISC},
#endif
{"","",0,0}};
@ -2272,7 +2249,7 @@ visuserconfig(void)
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: userconfig.c,v 1.6 1996/09/12 11:09:38 asami Exp $
* $Id: userconfig.c,v 1.7 1996/10/09 21:46:01 asami Exp $
*/
#include "scbus.h"
@ -2633,30 +2610,98 @@ center(int y, char *str)
static int
introfunc(CmdParm *parms)
{
int y = 3;
int curr_item, first_time;
static char *choices[] = {
" Skip kernel configuration and continue with installation ",
" Start kernel configuration in Visual mode ",
" Start kernel configuration in CLI mode (experts only) ",
};
clear();
center(y, "!iKernel Configuration Editor!n");
y += 2;
putxy(2, y++, "In this next screen, you will be shown a full list of all the device");
putxy(2, y++, "drivers which are available in this copy of the OS kernel. This is");
putxy(2, y++, "!inot!n a list of devices which you necessarily have, simply those");
putxy(2, y++, "which this kernel is capable of supporting.");
++y;
putxy(2, y++, "You should go through each device category and delete all entries");
putxy(2, y++, "(using the DELETE key) for devices that you do not have. This is an");
putxy(2, y++, "important step since it minimizes the chance of conflicts and also");
putxy(2, y++, "makes the kernel boot faster since there's no time wasted in trying to");
putxy(2, y++, "detect non-existant hardware. If you see an entry for a device which you");
putxy(2, y++, "you !ido!n have and it's not a PCI device (which will be auto-configured),");
putxy(2, y++, "be sure that its configuration parameters match your actual hardware.");
putxy(2, y++, "To edit a device's configuration, simply press ENTER while over it.");
putxy(2, y++, "Once you are satisfied with your device configuration, press Q to");
putxy(2, y++, "proceed with the booting process.");
++y;
center(y, "!iPress a key to continue!n");
cngetc();
return 0;
center(2, "!bKernel Configuration Menu!n");
curr_item = 0;
first_time = 1;
while (1) {
char tmp[80];
int c, i, extended = 0;
for (i = 0; i < 3; i++) {
tmp[0] = '\0';
if (curr_item == i)
strcpy(tmp, "!i");
strcat(tmp, choices[i]);
if (curr_item == i)
strcat(tmp, "!n");
putxy(10, 5 + i, tmp);
}
if (first_time) {
putxy(2, 10, "Here you have the chance to go into kernel configuration mode, making");
putxy(2, 11, "any changes which may be necessary to properly adjust the kernel to");
putxy(2, 12, "match your hardware configuration.");
putxy(2, 14, "If you are installing FreeBSD for the first time, select Visual Mode");
putxy(2, 15, "(press Down-Arrow then ENTER).");
putxy(2, 17, "If you need to do more specialized kernel configuration and are an");
putxy(2, 18, "experienced FreeBSD user, select CLI mode.");
putxy(2, 20, "If you are !icertain!n that you do not need to configure your kernel");
putxy(2, 21, "then simply press ENTER or Q now.");
first_time = 0;
}
move(0, 0); /* move the cursor out of the way */
c = getchar();
if ((extended == 2) || (c == 588) || (c == 596)) { /* console gives "alternative" codes */
extended = 0; /* no longer */
switch (c) {
case 588:
case 'A': /* up */
if (curr_item > 0)
--curr_item;
break;
case 596:
case 'B': /* down */
if (curr_item < 2)
++curr_item;
break;
}
}
else {
switch(c) {
case '\033':
extended = 1;
break;
case '[': /* cheat : always preceeds cursor move */
case 'O': /* ANSI application key mode */
if (extended == 1)
extended = 2;
else
extended = 0;
break;
case 'Q':
case 'q':
clear();
return 1; /* user requests exit */
case '\r':
case '\n':
clear();
if (!curr_item)
return 1;
else if (curr_item == 1)
return visuserconfig();
else {
putxy(0, 1, "Type \"help\" for help or \"quit\" to exit.");
move (0, 3);
return 0;
}
break;
}
}
}
}
#endif

View File

@ -38,7 +38,7 @@
*
* from: @(#)vm_machdep.c 7.3 (Berkeley) 5/13/91
* Utah $Hdr: vm_machdep.c 1.16.1.1 89/06/23$
* $Id: vm_machdep.c,v 1.4 1996/09/12 11:09:41 asami Exp $
* $Id: vm_machdep.c,v 1.5 1996/10/09 21:46:03 asami Exp $
*/
#include "npx.h"
@ -68,6 +68,7 @@
#ifdef PC98
#include <pc98/pc98/pc98.h>
#include <pc98/pc98/epsonio.h>
#else
#include <i386/isa/isa.h>
#endif
@ -631,8 +632,7 @@ cpu_wait(p)
struct proc *p;
{
/* drop per-process resources */
pmap_qremove((vm_offset_t) p->p_addr, UPAGES);
kmem_free(u_map, (vm_offset_t)p->p_addr, ctob(UPAGES));
pmap_dispose_proc(p);
vmspace_free(p->p_vmspace);
}

View File

@ -31,7 +31,7 @@
*/
/*
* $Id: aic6360.c,v 1.3 1996/09/03 10:23:23 asami Exp $
* $Id: aic6360.c,v 1.4 1996/09/10 09:37:43 asami Exp $
*
* Acknowledgements: Many of the algorithms used in this driver are
* inspired by the work of Julian Elischer (julian@tfs.com) and
@ -113,7 +113,7 @@
#endif
#include "opt_ddb.h"
#include <aic.h>
#include "aic.h"
#include <sys/types.h>
#include <sys/param.h>
@ -188,45 +188,7 @@
/* AIC6360 definitions */
#ifdef PC98
#define SCSISEQ (iobase + 0x00) /* SCSI sequence control */
#define SXFRCTL0 (iobase + 0x02) /* SCSI transfer control 0 */
#define SXFRCTL1 (iobase + 0x04) /* SCSI transfer control 1 */
#define SCSISIGI (iobase + 0x06) /* SCSI signal in */
#define SCSISIGO (iobase + 0x06) /* SCSI signal out */
#define SCSIRATE (iobase + 0x08) /* SCSI rate control */
#define SCSIID (iobase + 0x0a) /* SCSI ID */
#define SELID (iobase + 0x0a) /* Selection/Reselection ID */
#define SCSIDAT (iobase + 0x0c) /* SCSI Latched Data */
#define SCSIBUS (iobase + 0x0e) /* SCSI Data Bus*/
#define STCNT0 (iobase + 0x10) /* SCSI transfer count */
#define STCNT1 (iobase + 0x12)
#define STCNT2 (iobase + 0x14)
#define CLRSINT0 (iobase + 0x16) /* Clear SCSI interrupts 0 */
#define SSTAT0 (iobase + 0x16) /* SCSI interrupt status 0 */
#define CLRSINT1 (iobase + 0x18) /* Clear SCSI interrupts 1 */
#define SSTAT1 (iobase + 0x18) /* SCSI status 1 */
#define SSTAT2 (iobase + 0x1a) /* SCSI status 2 */
#define SCSITEST (iobase + 0x1c) /* SCSI test control */
#define SSTAT3 (iobase + 0x1c) /* SCSI status 3 */
#define CLRSERR (iobase + 0x1e) /* Clear SCSI errors */
#define SSTAT4 (iobase + 0x1e) /* SCSI status 4 */
#define SIMODE0 (iobase + 0x20) /* SCSI interrupt mode 0 */
#define SIMODE1 (iobase + 0x22) /* SCSI interrupt mode 1 */
#define DMACNTRL0 (iobase + 0x24) /* DMA control 0 */
#define DMACNTRL1 (iobase + 0x26) /* DMA control 1 */
#define DMASTAT (iobase + 0x28) /* DMA status */
#define FIFOSTAT (iobase + 0x2a) /* FIFO status */
#define DMADATA (iobase + 0x2c) /* DMA data */
#define DMADATAL (iobase + 0x2c) /* DMA data low byte */
#define DMADATAH (iobase + 0x2e) /* DMA data high byte */
#define BRSTCNTRL (iobase + 0x30) /* Burst Control */
#define DMADATALONG (iobase + 0x30)
#define PORTA (iobase + 0x34) /* Port A */
#define PORTB (iobase + 0x36) /* Port B */
#define REV (iobase + 0x38) /* Revision (001 for 6360) */
#define STACK (iobase + 0x3a) /* Stack */
#define TEST (iobase + 0x3c) /* Test register */
#define ID (iobase + 0x3e) /* ID register */
#include <pc98/pc98/aic_98.h>
#else
#define SCSISEQ (iobase + 0x00) /* SCSI sequence control */
#define SXFRCTL0 (iobase + 0x01) /* SCSI transfer control 0 */
@ -655,6 +617,9 @@ static struct aic_data { /* One of these per adapter */
u_char imess[AIC_MAX_MSG_LEN + 1];
u_char *imp; /* Message pointer (for multibyte messages) */
u_char imlen;
#ifdef PC98
int *aicport; /* I/O port information */
#endif
} *aicdata[NAIC];
#define AIC_SHOWACBS 0x01
@ -769,6 +734,15 @@ aicprobe(dev)
bzero(aic, sizeof(struct aic_data));
aicdata[unit] = aic;
aic->iobase = dev->id_iobase;
#ifdef PC98
if (AIC_TYPE98(dev->id_flags) == AIC98_100) {
/* PC-9801-100 */
aic->aicport = aicport_100;
} else {
/* generic card */
aic->aicport = aicport_generic;
}
#endif
if (aic_find(aic) != 0) {
aicdata[unit] = NULL;

93
sys/pc98/pc98/aic_98.h Normal file
View File

@ -0,0 +1,93 @@
/*
* Copyright (c) KATO Takenori, 1996. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer as
* the first lines of this file unmodified.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef __PC98_PC98_AIC_98_H__
#define __PC98_PC98_AIC_98_H__
/* generic card */
static int aicport_generic[32] = {
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f
};
/* PC-9801-100 */
static int aicport_100[32] = {
0x00, 0x02, 0x04, 0x06, 0x08, 0x0a, 0x0c, 0x0e,
0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e,
0x20, 0x22, 0x24, 0x26, 0x28, 0x2a, 0x2c, 0x2e,
0x30, 0x32, 0x34, 0x36, 0x38, 0x3a, 0x3c, 0x3e
};
#define AIC98_GENERIC 0x00
#define AIC98_100 0x01
#define AIC_TYPE98(x) ((x >> 16) & 0xff)
#define SCSISEQ (iobase + aic->aicport[0x00]) /* SCSI sequence control */
#define SXFRCTL0 (iobase + aic->aicport[0x01]) /* SCSI transfer control 0 */
#define SXFRCTL1 (iobase + aic->aicport[0x02]) /* SCSI transfer control 1 */
#define SCSISIGI (iobase + aic->aicport[0x03]) /* SCSI signal in */
#define SCSISIGO (iobase + aic->aicport[0x03]) /* SCSI signal out */
#define SCSIRATE (iobase + aic->aicport[0x04]) /* SCSI rate control */
#define SCSIID (iobase + aic->aicport[0x05]) /* SCSI ID */
#define SELID (iobase + aic->aicport[0x05]) /* Selection/Reselection ID */
#define SCSIDAT (iobase + aic->aicport[0x06]) /* SCSI Latched Data */
#define SCSIBUS (iobase + aic->aicport[0x07]) /* SCSI Data Bus*/
#define STCNT0 (iobase + aic->aicport[0x08]) /* SCSI transfer count */
#define STCNT1 (iobase + aic->aicport[0x09)
#define STCNT2 (iobase + aic->aicport[0x0a)
#define CLRSINT0 (iobase + aic->aicport[0x0b]) /* Clear SCSI interrupts 0 */
#define SSTAT0 (iobase + aic->aicport[0x0b]) /* SCSI interrupt status 0 */
#define CLRSINT1 (iobase + aic->aicport[0x0c]) /* Clear SCSI interrupts 1 */
#define SSTAT1 (iobase + aic->aicport[0x0c]) /* SCSI status 1 */
#define SSTAT2 (iobase + aic->aicport[0x0d]) /* SCSI status 2 */
#define SCSITEST (iobase + aic->aicport[0x0e]) /* SCSI test control */
#define SSTAT3 (iobase + aic->aicport[0x0e]) /* SCSI status 3 */
#define CLRSERR (iobase + aic->aicport[0x0f]) /* Clear SCSI errors */
#define SSTAT4 (iobase + aic->aicport[0x0f]) /* SCSI status 4 */
#define SIMODE0 (iobase + aic->aicport[0x10]) /* SCSI interrupt mode 0 */
#define SIMODE1 (iobase + aic->aicport[0x11]) /* SCSI interrupt mode 1 */
#define DMACNTRL0 (iobase + aic->aicport[0x12]) /* DMA control 0 */
#define DMACNTRL1 (iobase + aic->aicport[0x13]) /* DMA control 1 */
#define DMASTAT (iobase + aic->aicport[0x14]) /* DMA status */
#define FIFOSTAT (iobase + aic->aicport[0x15]) /* FIFO status */
#define DMADATA (iobase + aic->aicport[0x16]) /* DMA data */
#define DMADATAL (iobase + aic->aicport[0x16]) /* DMA data low byte */
#define DMADATAH (iobase + aic->aicport[0x17]) /* DMA data high byte */
#define BRSTCNTRL (iobase + aic->aicport[0x18]) /* Burst Control */
#define DMADATALONG (iobase + aic->aicport[0x18)
#define PORTA (iobase + aic->aicport[0x1a]) /* Port A */
#define PORTB (iobase + aic->aicport[0x1b]) /* Port B */
#define REV (iobase + aic->aicport[0x1c]) /* Revision (001 for 6360) */
#define STACK (iobase + aic->aicport[0x1d]) /* Stack */
#define TEST (iobase + aic->aicport[0x1e]) /* Test register */
#define ID (iobase + aic->aicport[0x1f]) /* ID register */
#endif

View File

@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)clock.c 7.2 (Berkeley) 5/12/91
* $Id: clock.c,v 1.6 1996/10/09 19:47:43 bde Exp $
* $Id: clock.c,v 1.7 1996/10/09 21:46:11 asami Exp $
*/
/*
@ -46,7 +46,7 @@
/*
* modified for PC98
* $Id: clock.c,v 1.6 1996/10/09 19:47:43 bde Exp $
* $Id: clock.c,v 1.7 1996/10/09 21:46:11 asami Exp $
*/
/*
@ -1127,6 +1127,32 @@ cpu_initclocks()
writertc(RTC_STATUSA, rtc_statusa);
writertc(RTC_STATUSB, RTCSB_24HR);
/* Don't bother enabling the statistics clock. */
if (statclock_disable)
return;
diag = rtcin(RTC_DIAG);
if (diag != 0)
printf("RTC BIOS diagnostic error %b\n", diag, RTCDG_BITS);
register_intr(/* irq */ 8, /* XXX id */ 1, /* flags */ 0,
/* XXX */ (inthand2_t *)rtcintr, &stat_imask,
/* unit */ 0);
INTREN(IRQ8);
writertc(RTC_STATUSB, rtc_statusb);
#endif
}
void
setstatclockrate(int newhz)
{
#ifndef PC98
if (newhz == RTC_PROFRATE)
rtc_statusa = RTCSA_DIVIDER | RTCSA_PROF;
else
rtc_statusa = RTCSA_DIVIDER | RTCSA_NOPROF;
writertc(RTC_STATUSA, rtc_statusa);
#endif
}
static int
sysctl_machdep_i8254_freq SYSCTL_HANDLER_ARGS
{
@ -1193,29 +1219,3 @@ sysctl_machdep_i586_freq SYSCTL_HANDLER_ARGS
SYSCTL_PROC(_machdep, OID_AUTO, i586_freq, CTLTYPE_INT | CTLFLAG_RW,
0, sizeof(u_int), sysctl_machdep_i586_freq, "I", "");
#endif /* defined(I586_CPU) || defined(I686_CPU) */
/* Don't bother enabling the statistics clock. */
if (statclock_disable)
return;
diag = rtcin(RTC_DIAG);
if (diag != 0)
printf("RTC BIOS diagnostic error %b\n", diag, RTCDG_BITS);
register_intr(/* irq */ 8, /* XXX id */ 1, /* flags */ 0,
/* XXX */ (inthand2_t *)rtcintr, &stat_imask,
/* unit */ 0);
INTREN(IRQ8);
writertc(RTC_STATUSB, rtc_statusb);
#endif
}
void
setstatclockrate(int newhz)
{
#ifndef PC98
if (newhz == RTC_PROFRATE)
rtc_statusa = RTCSA_DIVIDER | RTCSA_PROF;
else
rtc_statusa = RTCSA_DIVIDER | RTCSA_NOPROF;
writertc(RTC_STATUSA, rtc_statusa);
#endif
}

79
sys/pc98/pc98/epsonio.h Normal file
View File

@ -0,0 +1,79 @@
/*
* Copyright (c) KATO Takenori, 1996. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer as
* the first lines of this file unmodified.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef __PC98_PC98_EPSONIO_H__
#define __PC98_PC98_EPSONIO_H__
#include <machine/cpufunc.h>
#include <machine/spl.h>
static inline u_char
epson_inb(u_int port)
{
u_char data;
outb(0x43f, 0x42);
data = inb(port);
outb(0x43f, 0x40);
return (data);
}
static inline void
epson_outb(u_int port, u_char data)
{
outb(0x43f, 0x42);
outb(port,data);
outb(0x43f, 0x40);
}
static inline void
epson_insw(u_int port, void *addr, size_t cnt)
{
int s;
s = splbio();
outb(0x43f, 0x42);
disable_intr();
insw((u_int)port, (void *)addr, (size_t)cnt);
outb(0x43f, 0x40);
splx(s);
}
static inline void
epson_outsw(u_int port, void *addr, size_t cnt)
{
int s;
s = splbio();
outb(0x43f, 0x42);
disable_intr();
outsw((u_int)port, (void *)addr, (size_t)cnt);
outb(0x43f, 0x40);
splx(s);
}
#endif

View File

@ -43,7 +43,7 @@
* SUCH DAMAGE.
*
* from: @(#)fd.c 7.4 (Berkeley) 5/25/91
* $Id: fd.c,v 1.5 1996/09/03 10:23:25 asami Exp $
* $Id: fd.c,v 1.6 1996/09/10 09:37:50 asami Exp $
*
*/
@ -72,6 +72,7 @@
#include <sys/dkstat.h>
#ifdef PC98
#include <pc98/pc98/pc98.h>
#include <pc98/pc98/epsonio.h>
#include <i386/isa/isa_device.h>
#include <pc98/pc98/fdreg.h>
#include <pc98/pc98/fdc.h>

View File

@ -24,7 +24,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: if_ed.c,v 1.7 1996/09/10 09:38:04 asami Exp $
* $Id: if_ed.c,v 1.8 1996/10/09 21:46:18 asami Exp $
*/
/*
@ -72,6 +72,7 @@
#include <net/if.h>
#include <net/if_dl.h>
#include <net/if_mib.h>
#include <net/if_types.h>
#ifdef INET
@ -157,6 +158,7 @@ struct ed_softc {
u_char rec_page_start; /* first page of RX ring-buffer */
u_char rec_page_stop; /* last page of RX ring-buffer */
u_char next_packet; /* pointer to next unread RX packet */
struct ifmib_iso_8802_3 mibdata; /* stuff for network mgmt */
#ifdef PC98
int unit;
#endif
@ -167,7 +169,7 @@ static struct ed_softc ed_softc[NED];
static int ed_attach __P((struct ed_softc *, int, int));
static int ed_attach_isa __P((struct isa_device *));
static void ed_init __P((struct ed_softc *));
static void ed_init __P((void *));
static int ed_ioctl __P((struct ifnet *, int, caddr_t));
static int ed_probe __P((struct isa_device *));
static void ed_start __P((struct ifnet *));
@ -258,6 +260,16 @@ static struct pccard_drv ed_info = {
static void
edsuspend(struct pccard_dev *dp)
{
struct ed_softc *sc = &ed_softc[dp->isahd.id_unit];
/*
* Some 'ed' cards will generate a interrupt as they go away,
* and by the time the interrupt handler gets to the card,
* the interrupt can't be cleared.
* By setting gone here, we tell the handler to ignore the
* interrupt when it happens.
*/
sc->gone = 1; /* avoid spinning endlessly in interrupt handler */
printf("ed%d: suspending\n", dp->isahd.id_unit);
}
@ -285,6 +297,8 @@ edinit(struct pccard_dev *dp, int first)
return(ENXIO);
if (ed_attach_isa(&dp->isahd)==0)
return(ENXIO);
} else {
sc->gone = 0; /* reenable after a suspend */
}
/*
* XXX TODO:
@ -1578,115 +1592,28 @@ ed_probe_Novell(isa_dev)
}
#if NCRD > 0
/*
* Probe and vendor-specific initialization routine for PCCARDs
* Probe framework for pccards. Replicates the standard framework,
* minus the pccard driver registration and ignores the ether address
* supplied (from the CIS), relying on the probe to find it instead.
*/
static int
ed_probe_pccard(isa_dev, ether)
struct isa_device *isa_dev;
u_char *ether;
{
struct ed_softc *sc = &ed_softc[isa_dev->id_unit];
int i;
u_int memsize;
u_char isa16bit;
#ifdef PC98
int unit = isa_dev->id_unit;
#endif
int nports;
sc->nic_addr = isa_dev->id_iobase;
sc->gone = 0;
sc->is790 = 0;
sc->cr_proto = ED_CR_RD2;
sc->vendor = ED_VENDOR_PCCARD;
sc->type = 0;
sc->type_str = "PCCARD";
sc->mem_size = isa_dev->id_msize = memsize = 16384;
sc->isa16bit = isa16bit = 1;
nports = ed_probe_WD80x3(isa_dev);
if (nports)
return (nports);
for (i = 0; i < ETHER_ADDR_LEN; ++i)
sc->arpcom.ac_enaddr[i] = ether[i];
nports = ed_probe_Novell(isa_dev);
if (nports)
return (nports);
#if ED_DEBUG
printf("type = %x type_str=%s isa16bit=%d memsize=%d id_msize=%d\n",
sc->type, sc->type_str, isa16bit, memsize, isa_dev->id_msize);
#endif
i = inb(sc->nic_addr + ED_PC_RESET);
DELAY(100000);
outb(sc->nic_addr + ED_PC_RESET,i);
DELAY(100000);
i = inb(sc->nic_addr + ED_PC_MISC);
if (!i) {
int j;
printf("ed_probe_pccard: possible failure\n");
for (j=0;j<20 && !i;j++) {
printf(".");
DELAY(100000);
i = inb(sc->nic_addr + ED_PC_MISC);
}
if (!i) {
printf("dead :-(\n");
return 0;
}
printf("\n");
}
/*
* Set initial values for width/size.
*/
/* Make sure that we really have an 8390 based board */
if (!ed_probe_generic8390(sc)) {
printf("ed_probe_generic8390 failed\n");
return (0);
}
sc->txb_cnt = 2;
sc->tx_page_start = ED_PC_PAGE_OFFSET;
sc->rec_page_start = sc->tx_page_start + ED_TXBUF_SIZE * sc->txb_cnt;
sc->rec_page_stop = sc->tx_page_start + memsize / ED_PAGE_SIZE;
sc->mem_shared = 1;
sc->mem_start = (caddr_t) isa_dev->id_maddr;
sc->mem_size = memsize;
sc->mem_end = sc->mem_start + memsize;
sc->mem_ring = sc->mem_start +
sc->txb_cnt * ED_PAGE_SIZE * ED_TXBUF_SIZE;
/*
* Now zero memory and verify that it is clear
*/
bzero(sc->mem_start, memsize);
for (i = 0; i < memsize; ++i) {
if (sc->mem_start[i]) {
printf("ed%d: failed to clear shared memory at %lx - check configuration\n",
isa_dev->id_unit, kvtop(sc->mem_start + i));
return (0);
}
sc->mem_start[i] = (i - 5) & 0xff;
}
for (i = 0; i < memsize; ++i) {
if ((sc->mem_start[i] & 0xff) != ((i - 5) & 0xff)) {
printf("ed%d: shared memory failed at %lx (%x != %x) - check configuration\n",
isa_dev->id_unit, kvtop(sc->mem_start + i),
sc->mem_start[i], (i-5) & 0xff);
return (0);
}
}
i = inb(sc->nic_addr + ED_PC_MISC);
if (!i) {
printf("ed_probe_pccard: possible failure(2)\n");
}
/* clear any pending interupts that we may have caused */
outb(sc->nic_addr + ED_P0_ISR, 0xff);
return (ED_PC_IO_PORTS);
return (0);
}
#endif /* NCRD > 0 */
@ -2445,8 +2372,22 @@ ed_attach(sc, unit, flags)
ifp->if_start = ed_start;
ifp->if_ioctl = ed_ioctl;
ifp->if_watchdog = ed_watchdog;
ifp->if_init = (if_init_f_t *)ed_init;
ifp->if_init = ed_init;
ifp->if_snd.ifq_maxlen = IFQ_MAXLEN;
ifp->if_linkmib = &sc->mibdata;
ifp->if_linkmiblen = sizeof sc->mibdata;
/*
* XXX - should do a better job.
*/
if (sc->is790)
sc->mibdata.dot3StatsEtherChipSet =
DOT3CHIPSET(dot3VendorWesternDigital,
dot3ChipSetWesternDigital83C790);
else
sc->mibdata.dot3StatsEtherChipSet =
DOT3CHIPSET(dot3VendorNational,
dot3ChipSetNational8390);
sc->mibdata.dot3Compliance = DOT3COMPLIANCE_COLLS;
/*
* Set default state for ALTPHYS flag (used to disable the
@ -2603,9 +2544,10 @@ ed_watchdog(ifp)
* Initialize device.
*/
static void
ed_init(sc)
struct ed_softc *sc;
ed_init(xsc)
void *xsc;
{
struct ed_softc *sc = xsc;
struct ifnet *ifp = &sc->arpcom.ac_if;
int i, s;
#ifdef PC98
@ -3043,6 +2985,9 @@ ed_rint(sc)
len += ((packet_hdr.next_packet - sc->rec_page_start) +
(sc->rec_page_stop - sc->next_packet)) * ED_PAGE_SIZE;
}
if (len > (ETHER_MAX_LEN - ETHER_CRC_LEN
+ sizeof(struct ed_ring)))
sc->mibdata.dot3StatsFrameTooLongs++;
}
/*
* Be fairly liberal about what we allow as a "reasonable" length
@ -3152,11 +3097,13 @@ edintr_sc(sc)
*/
(void) inb(sc->nic_addr + ED_P0_TSR);
if (isr & ED_ISR_TXE) {
u_char tsr;
/*
* Excessive collisions (16)
*/
if ((inb(sc->nic_addr + ED_P0_TSR) & ED_TSR_ABT)
tsr = inb(sc->nic_addr + ED_P0_TSR);
if ((tsr & ED_TSR_ABT)
&& (collisions == 0)) {
/*
@ -3165,7 +3112,18 @@ edintr_sc(sc)
* TSR_ABT is set.
*/
collisions = 16;
sc->mibdata.dot3StatsMultipleCollisionFrames++;
sc->mibdata.dot3StatsExcessiveCollisions++;
sc->mibdata.dot3StatsCollFrequencies[15]++;
}
if (tsr & ED_TSR_OWC)
sc->mibdata.dot3StatsLateCollisions++;
if (tsr & ED_TSR_CDH)
sc->mibdata.dot3StatsSQETestErrors++;
if (tsr & ED_TSR_CRS)
sc->mibdata.dot3StatsCarrierSenseErrors++;
if (tsr & ED_TSR_FU)
sc->mibdata.dot3StatsInternalMacTransmitErrors++;
/*
* update output errors counter
@ -3196,6 +3154,23 @@ edintr_sc(sc)
* transmission.
*/
ifp->if_collisions += collisions;
switch(collisions) {
case 0:
case 16:
break;
case 1:
sc->mibdata.dot3StatsSingleCollisionFrames++;
sc->mibdata.dot3StatsDeferredTransmissions++;
sc->mibdata.dot3StatsCollFrequencies[0]++;
break;
default:
sc->mibdata.dot3StatsMultipleCollisionFrames++;
sc->mibdata.dot3StatsDeferredTransmissions++;
sc->mibdata.
dot3StatsCollFrequencies[collisions-1]
++;
break;
}
/*
* Decrement buffer in-use count if not zero (can only
@ -3242,6 +3217,14 @@ edintr_sc(sc)
* missed packet.
*/
if (isr & ED_ISR_RXE) {
u_char rsr;
rsr = inb(sc->nic_addr + ED_P0_RSR);
if (rsr & ED_RSR_CRC)
sc->mibdata.dot3StatsFCSErrors++;
if (rsr & ED_RSR_FAE)
sc->mibdata.dot3StatsAlignmentErrors++;
if (rsr & ED_RSR_FO)
sc->mibdata.dot3StatsInternalMacReceiveErrors++;
ifp->if_ierrors++;
#ifdef ED_DEBUG
printf("ed%d: receive error %x\n", ifp->if_unit,

View File

@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* from: @(#)machdep.c 7.4 (Berkeley) 6/3/91
* $Id: machdep.c,v 1.8 1996/09/12 11:09:26 asami Exp $
* $Id: machdep.c,v 1.9 1996/10/09 21:45:56 asami Exp $
*/
#include "npx.h"
@ -1063,7 +1063,7 @@ init386(first)
setidt(11, &IDTVEC(missing), SDT_SYS386TGT, SEL_KPL, GSEL(GCODE_SEL, SEL_KPL));
setidt(12, &IDTVEC(stk), SDT_SYS386TGT, SEL_KPL, GSEL(GCODE_SEL, SEL_KPL));
setidt(13, &IDTVEC(prot), SDT_SYS386TGT, SEL_KPL, GSEL(GCODE_SEL, SEL_KPL));
#ifdef CYRIX_486DLC
#if defined(CYRIX_486DLC) || defined(CYRIX_5X86)
setidt(14, &IDTVEC(page), SDT_SYS386IGT, SEL_KPL, GSEL(GCODE_SEL, SEL_KPL));
#else
setidt(14, &IDTVEC(page), SDT_SYS386TGT, SEL_KPL, GSEL(GCODE_SEL, SEL_KPL));
@ -1140,6 +1140,7 @@ init386(first)
printf(
"BIOS basemem (%ldK) != RTC basemem (%dK), setting to BIOS value\n",
bootinfo.bi_basemem, biosbasemem);
biosbasemem = bootinfo.bi_basemem;
/*

View File

@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)isa.c 7.2 (Berkeley) 5/13/91
* $Id: pc98.c,v 1.7 1996/09/12 11:09:51 asami Exp $
* $Id: pc98.c,v 1.8 1996/10/09 21:46:31 asami Exp $
*/
/*
@ -68,6 +68,7 @@
#include <i386/isa/isa_device.h>
#ifdef PC98
#include <pc98/pc98/pc98.h>
#include <pc98/pc98/epsonio.h>
#else
#include <i386/isa/isa.h>
#endif
@ -75,10 +76,6 @@
#include <i386/isa/ic/i8237.h>
#include "vector.h"
#ifdef PC98
unsigned char hireso = 0;
#endif
/*
** Register definitions for DMA controller 1 (channels 0..3):
*/
@ -576,11 +573,9 @@ static u_int8_t dma_inuse = 0; /* User for acquire/release */
/* high byte of address is stored in this port for i-th dma channel */
#ifdef PC98
short dmapageport[4] =
{ 0x27, 0x21, 0x23, 0x25 };
static int dmapageport[4] = { 0x27, 0x21, 0x23, 0x25 };
#else /* IBM-PC */
static short dmapageport[8] =
{ 0x87, 0x83, 0x81, 0x82, 0x8f, 0x8b, 0x89, 0x8a };
static int dmapageport[8] = { 0x87, 0x83, 0x81, 0x82, 0x8f, 0x8b, 0x89, 0x8a };
#endif
/*

View File

@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)isa.h 5.7 (Berkeley) 5/9/91
* $Id: pc98.h,v 1.4 1996/09/12 11:09:54 asami Exp $
* $Id: pc98.h,v 1.5 1996/10/09 21:46:34 asami Exp $
*/
#ifndef _PC98_PC98_PC98_H_
@ -193,7 +193,6 @@
#define M_H98 0x0020
#define M_NOTE 0x0040
#define M_NORMAL 0x1000
#define M_HIGHRESO 0x2000
#define M_8M 0x8000
#if defined(KERNEL) && !defined(LOCORE)
@ -214,52 +213,6 @@ extern unsigned char pc98_system_parameter[]; /* in locore.c */
# define PC98_TYPE_CHECK(x) ((pc98_machine_type & (x)) == (x))
#include <machine/spl.h>
static inline u_char
epson_inb(u_int port)
{
u_char data;
outb(0x43f, 0x42);
data = inb(port);
outb(0x43f, 0x40);
return (data);
}
static inline void
epson_outb(u_int port, u_char data)
{
outb(0x43f, 0x42);
outb(port,data);
outb(0x43f, 0x40);
}
static inline void
epson_insw(u_int port, void *addr, size_t cnt)
{
int s;
s = splbio();
outb(0x43f, 0x42);
disable_intr();
insw((u_int)port, (void *)addr, (size_t)cnt);
outb(0x43f, 0x40);
splx(s);
}
static inline void
epson_outsw(u_int port, void *addr, size_t cnt)
{
int s;
s = splbio();
outb(0x43f, 0x42);
disable_intr();
outsw((u_int)port, (void *)addr, (size_t)cnt);
outb(0x43f, 0x40);
splx(s);
}
#endif /* KERNEL */
/*

View File

@ -46,8 +46,8 @@
extern int Maxmem;
extern int Maxmem_under16M;
void init_cpu_accel_mem __P((void));
void init_pc98_dmac __P((void));
static void init_cpu_accel_mem __P((void));
void pc98_init_dmac __P((void));
#ifdef EPSON_MEMWIN
static void init_epson_memwin __P((void));
@ -107,9 +107,9 @@ static void init_epson_memwin(void)
}
#endif
void init_cpu_accel_mem(void)
static void init_cpu_accel_mem(void)
{
int target_page;
u_int target_page;
/*
* Certain 'CPU accelerator' supports over 16MB memory on
* the machines whose BIOS doesn't store true size.
@ -119,38 +119,38 @@ void init_cpu_accel_mem(void)
for (target_page = ptoa(4096); /* 16MB */
target_page < ptoa(32768); /* 128MB */
target_page += 256 * PAGE_SIZE /* 1MB step */) {
int tmp, page_bad = FALSE, OrigMaxmem = Maxmem;
u_int tmp, page_bad = FALSE, OrigMaxmem = Maxmem;
*(int *)CMAP1 = PG_V | PG_RW | PG_N | target_page;
invltlb();
tmp = *(int *)CADDR1;
tmp = *(u_int *)CADDR1;
/*
* Test for alternating 1's and 0's
*/
*(volatile int *)CADDR1 = 0xaaaaaaaa;
if (*(volatile int *)CADDR1 != 0xaaaaaaaa) {
*(volatile u_int *)CADDR1 = 0xaaaaaaaa;
if (*(volatile u_int *)CADDR1 != 0xaaaaaaaa) {
page_bad = TRUE;
}
/*
* Test for alternating 0's and 1's
*/
*(volatile int *)CADDR1 = 0x55555555;
if (*(volatile int *)CADDR1 != 0x55555555) {
*(volatile u_int *)CADDR1 = 0x55555555;
if (*(volatile u_int *)CADDR1 != 0x55555555) {
page_bad = TRUE;
}
/*
* Test for all 1's
*/
*(volatile int *)CADDR1 = 0xffffffff;
if (*(volatile int *)CADDR1 != 0xffffffff) {
*(volatile u_int *)CADDR1 = 0xffffffff;
if (*(volatile u_int *)CADDR1 != 0xffffffff) {
page_bad = TRUE;
}
/*
* Test for all 0's
*/
*(volatile int *)CADDR1 = 0x0;
if (*(volatile int *)CADDR1 != 0x0) {
*(volatile u_int *)CADDR1 = 0x0;
if (*(volatile u_int *)CADDR1 != 0x0) {
/*
* test of page failed
*/
@ -159,7 +159,7 @@ void init_cpu_accel_mem(void)
/*
* Restore original value.
*/
*(int *)CADDR1 = tmp;
*(u_int *)CADDR1 = tmp;
if (page_bad == TRUE) {
Maxmem = atop(target_page) + 256;
} else
@ -170,7 +170,6 @@ void init_cpu_accel_mem(void)
}
}
int dma_init_flag = 1; /* dummy */
void pc98_init_dmac(void)
{

View File

@ -1,7 +1,7 @@
/*
* random_machdep.c -- A strong random number generator
*
* $Id: random_machdep.c,v 1.6 1996/10/09 19:47:44 bde Exp $
* $Id: random_machdep.c,v 1.7 1996/10/09 21:46:41 asami Exp $
*
* Version 0.95, last modified 18-Oct-95
*
@ -57,11 +57,9 @@
#include <i386/isa/icu.h>
#ifdef PC98
#include <pc98/pc98/pc98.h>
#include <i386/isa/isa_device.h>
#include <pc98/pc98/timerreg.h>
#else
#include <i386/isa/isa.h>
#include <i386/isa/isa_device.h>
#include <i386/isa/timerreg.h>
#endif

View File

@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id: syscons.c,v 1.9 1996/09/12 11:10:00 asami Exp $
* $Id: syscons.c,v 1.10 1996/10/09 21:46:49 asami Exp $
*/
#include "sc.h"
@ -164,7 +164,9 @@ static u_short mouse_or_mask[16] = {
};
static void none_saver(int blank) { }
void (*current_saver) __P((int blank)) = none_saver;
void (*current_saver)(int blank) = none_saver;
int (*sc_user_ioctl)(dev_t dev, int cmd, caddr_t data,
int flag, struct proc *p) = NULL;
/* OS specific stuff */
#ifdef not_yet_done
@ -392,7 +394,7 @@ scprobe(struct isa_device *dev)
return(16);
#else
int i, j, retries = 5;
unsigned char val;
u_char val;
/* Enable interrupts and keyboard controller */
kbd_wait();
@ -507,7 +509,9 @@ scattach(struct isa_device *dev)
scp->cursor_atr =
scp->atr_buf + scp->xpos + scp->ypos * scp->xsize;
#endif
scp->mouse_pos = scp->mouse_oldpos = scp->scr_buf;
scp->mouse_pos = scp->mouse_oldpos =
scp->scr_buf + ((scp->mouse_ypos/scp->font_size)*scp->xsize +
scp->mouse_xpos/8);
/* initialize history buffer & pointers */
scp->history_head = scp->history_pos = scp->history =
@ -612,6 +616,10 @@ scopen(dev_t dev, int flag, int mode, struct proc *p)
if (minor(dev) < MAXCONS && !console[minor(dev)]) {
console[minor(dev)] = alloc_scp();
}
if (minor(dev)<MAXCONS && !tp->t_winsize.ws_col && !tp->t_winsize.ws_row) {
tp->t_winsize.ws_col = console[minor(dev)]->xsize;
tp->t_winsize.ws_row = console[minor(dev)]->ysize;
}
return ((*linesw[tp->t_line].l_open)(dev, tp));
}
@ -700,7 +708,7 @@ scintr(int unit)
(*linesw[cur_tty->t_line].l_rint)(c & 0xFF, cur_tty);
break;
case NOKEY: /* nothing there */
break;
return;
case FKEY: /* function key, return string */
if (cp = get_fstr((u_int)c, (u_int *)&len)) {
while (len-- > 0)
@ -717,6 +725,10 @@ scintr(int unit)
(*linesw[cur_tty->t_line].l_rint)('Z', cur_tty);
break;
}
if (cur_console->status & MOUSE_ENABLED) {
cur_console->status &= ~MOUSE_VISIBLE;
remove_mouse_image(cur_console);
}
}
static int
@ -731,7 +743,8 @@ scparam(struct tty *tp, struct termios *t)
int
scioctl(dev_t dev, int cmd, caddr_t data, int flag, struct proc *p)
{
int i, error;
int error;
u_int i;
struct tty *tp;
struct trapframe *fp;
scr_stat *scp;
@ -741,6 +754,12 @@ scioctl(dev_t dev, int cmd, caddr_t data, int flag, struct proc *p)
return ENXIO;
scp = get_scr_stat(tp->t_dev);
/* If there is a user_ioctl function call that first */
if (sc_user_ioctl) {
if (error = (*sc_user_ioctl)(dev, cmd, data, flag, p))
return error;
}
switch (cmd) { /* process console hardware related ioctl's */
case GIO_ATTR: /* get current attributes */
@ -857,7 +876,7 @@ scioctl(dev_t dev, int cmd, caddr_t data, int flag, struct proc *p)
case MOUSE_SHOW:
if (!(scp->status & MOUSE_ENABLED)) {
scp->status |= MOUSE_ENABLED;
scp->status |= (MOUSE_ENABLED | MOUSE_VISIBLE);
scp->mouse_oldpos = scp->mouse_pos;
mark_all(scp);
}
@ -867,7 +886,7 @@ scioctl(dev_t dev, int cmd, caddr_t data, int flag, struct proc *p)
case MOUSE_HIDE:
if (scp->status & MOUSE_ENABLED) {
scp->status &= ~MOUSE_ENABLED;
scp->status &= ~(MOUSE_ENABLED | MOUSE_VISIBLE);
mark_all(scp);
}
else
@ -895,6 +914,8 @@ scioctl(dev_t dev, int cmd, caddr_t data, int flag, struct proc *p)
case MOUSE_ACTION:
/* this should maybe only be settable from /dev/consolectl SOS */
/* send out mouse event on /dev/sysmouse */
if (cur_console->status & MOUSE_ENABLED)
cur_console->status |= MOUSE_VISIBLE;
if ((MOUSE_TTY)->t_state & TS_ISOPEN) {
u_char buf[5];
int i;
@ -1554,7 +1575,7 @@ sccnprobe(struct consdev *cp)
* Take control if we are the highest priority enabled display device.
*/
dvp = find_display();
if (dvp != NULL && dvp->id_driver != &scdriver) {
if (dvp == NULL || dvp->id_driver != &scdriver) {
cp->cn_pri = CN_DEAD;
return;
}
@ -1673,7 +1694,7 @@ scrn_timer()
}
/* update "pseudo" mouse pointer image */
if ((scp->status & MOUSE_ENABLED) && crtc_vga) {
if ((scp->status & MOUSE_VISIBLE) && crtc_vga) {
/* did mouse move since last time ? */
if (scp->status & MOUSE_MOVED) {
/* do we need to remove old mouse pointer image ? */
@ -2954,8 +2975,8 @@ scinit(void)
u_short volatile *cp;
u_short was;
#endif
unsigned hw_cursor;
int i;
u_int hw_cursor;
u_int i;
if (init_done != COLD)
return;
@ -3090,9 +3111,12 @@ static scr_stat
scp = (scr_stat *)malloc(sizeof(scr_stat), M_DEVBUF, M_WAITOK);
init_scp(scp);
scp->scr_buf = scp->cursor_pos = scp->cursor_oldpos = scp->mouse_pos =
scp->scr_buf = scp->cursor_pos = scp->cursor_oldpos =
(u_short *)malloc(scp->xsize*scp->ysize*sizeof(u_short),
M_DEVBUF, M_WAITOK);
scp->mouse_pos = scp->mouse_oldpos =
scp->scr_buf + ((scp->mouse_ypos/scp->font_size)*scp->xsize +
scp->mouse_xpos/8);
scp->history_head = scp->history_pos = scp->history =
(u_short *)malloc(scp->history_size*sizeof(u_short),
M_DEVBUF, M_WAITOK);
@ -3127,7 +3151,7 @@ init_scp(scr_stat *scp)
scp->font_size = FONT_16;
scp->xsize = COL;
scp->ysize = ROW;
scp->start = COL * ROW;
scp->start = scp->xsize * scp->ysize;
scp->end = 0;
scp->term.esc = 0;
scp->term.attr_mask = NORMAL_ATTR;
@ -3143,7 +3167,8 @@ init_scp(scr_stat *scp)
scp->cursor_start = *(char *)pa_to_va(0x461);
scp->cursor_end = *(char *)pa_to_va(0x460);
#endif
scp->mouse_xpos = scp->mouse_ypos = 0;
scp->mouse_xpos = scp->xsize*8/2;
scp->mouse_ypos = scp->ysize*scp->font_size/2;
scp->mouse_cut_start = scp->mouse_cut_end = NULL;
scp->mouse_signal = 0;
scp->mouse_pid = 0;
@ -4230,7 +4255,7 @@ set_destructive_cursor(scr_stat *scp)
address = (caddr_t)VIDEOMEM + 0x4000;
}
if (scp->status & MOUSE_ENABLED) {
if (scp->status & MOUSE_VISIBLE) {
if ((scp->cursor_saveunder & 0xff) == 0xd0)
bcopyw(&scp->mouse_cursor[0], cursor, scp->font_size);
else if ((scp->cursor_saveunder & 0xff) == 0xd1)
@ -4284,7 +4309,7 @@ set_mouse_pos(scr_stat *scp)
scp->mouse_pos = scp->scr_buf +
((scp->mouse_ypos/scp->font_size)*scp->xsize + scp->mouse_xpos/8);
if ((scp->status & MOUSE_ENABLED) && (scp->status & MOUSE_CUTTING)) {
if ((scp->status & MOUSE_VISIBLE) && (scp->status & MOUSE_CUTTING)) {
u_short *ptr;
int i = 0;
@ -4313,7 +4338,7 @@ mouse_cut_start(scr_stat *scp)
#ifndef PC98
int i;
if (scp->status & MOUSE_ENABLED) {
if (scp->status & MOUSE_VISIBLE) {
if (scp->mouse_pos == scp->mouse_cut_start &&
scp->mouse_cut_start == scp->mouse_cut_end) {
cut_buffer[0] = 0x00;
@ -4340,7 +4365,7 @@ static void
mouse_cut_end(scr_stat *scp)
{
#ifndef PC98
if (scp->status & MOUSE_ENABLED) {
if (scp->status & MOUSE_VISIBLE) {
scp->status &= ~MOUSE_CUTTING;
}
#endif
@ -4350,7 +4375,7 @@ static void
mouse_paste(scr_stat *scp)
{
#ifndef PC98
if (scp->status & MOUSE_ENABLED) {
if (scp->status & MOUSE_VISIBLE) {
struct tty *tp;
u_char *ptr = cut_buffer;

View File

@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id: syscons.h,v 1.3 1996/09/04 09:52:31 asami Exp $
* $Id: syscons.h,v 1.4 1996/10/09 21:46:51 asami Exp $
*/
#ifndef _PC98_PC98_SYSCONS_H_
@ -63,6 +63,7 @@
#define MOUSE_ENABLED 0x00400
#define MOUSE_MOVED 0x00800
#define MOUSE_CUTTING 0x01000
#define MOUSE_VISIBLE 0x02000
/* configuration flags */
#define VISUAL_BELL 0x00001
@ -225,10 +226,11 @@ typedef struct default_attr {
int rev_color; /* reverse hardware color */
} default_attr;
void load_palette(void);
/* misc prototypes used by different syscons related LKM's */
void set_border(u_char color);
void set_mode(scr_stat *scp);
void copy_font(int operation, int font_type, char* font_image);
void load_palette(void);
#ifdef PC98
unsigned int at2pc98(unsigned int attr);

View File

@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)wd.c 7.2 (Berkeley) 5/9/91
* $Id: wd.c,v 1.7 1996/09/10 09:38:45 asami Exp $
* $Id: wd.c,v 1.8 1996/10/09 21:46:52 asami Exp $
*/
/* TODO:
@ -88,6 +88,7 @@
#include <machine/md_var.h>
#ifdef PC98
#include <pc98/pc98/pc98.h>
#include <pc98/pc98/epsonio.h>
#include <i386/isa/isa_device.h>
#include <pc98/pc98/wdreg.h>
#else
@ -1048,8 +1049,7 @@ wdintr(int unit)
}
}
else {
if( (du->dk_status & DKFL_MULTI)
&& (inb(du->dk_port) & WDERR_ABORT)) {
if( (du->dk_flags & DKFL_MULTI) && (inb(du->dk_port) & WDERR_ABORT)) {
wderror(bp, du,
"reverting to non-multi sector mode");
du->dk_multi = 1;