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:
parent
ad5123aab3
commit
4f3d818c12
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=19122
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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>
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
|
@ -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:
|
||||
|
@ -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>
|
||||
|
@ -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 */
|
||||
|
||||
/*
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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>
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -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;
|
||||
|
||||
/*
|
||||
|
2990
sys/pc98/i386/pmap.c
2990
sys/pc98/i386/pmap.c
File diff suppressed because it is too large
Load Diff
@ -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();
|
||||
|
@ -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
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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
93
sys/pc98/pc98/aic_98.h
Normal 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
|
@ -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
79
sys/pc98/pc98/epsonio.h
Normal 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
|
@ -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>
|
||||
|
@ -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,
|
||||
|
@ -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;
|
||||
|
||||
/*
|
||||
|
@ -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
|
||||
|
||||
/*
|
||||
|
@ -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 */
|
||||
|
||||
/*
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user