Return to BSD News archive
Newsgroups: comp.unix.bsd
Path: sserve!manuel!munnari.oz.au!network.ucsd.edu!usc!cs.utexas.edu!sun-barr!ames!agate!tfs.com!tfs.com!julian
From: julian@tfs.com (Julian Elischer)
Subject: New scsi system beta3 (part 1 of 10)
Message-ID: <1992Oct3.040100.13422@tfs.com>
Organization: TRW Financial Systems
Date: Sat, 3 Oct 1992 04:01:00 GMT
Lines: 587
# This is a shell archive. Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file". Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
# ddb/db_command.c.patch
# kern/kern_subr.c.patch
# i386/isa/clock.c.patch
# i386/conf/Makefile.i386.patch
# i386/i386/conf.c.patch
# i386/isa/isa.h.patch
# i386/conf/devices.i386.patch
# i386/conf/files.i386.patch
# MAKEDEV
#
echo x - ddb/db_command.c.patch
sed 's/^X//' >ddb/db_command.c.patch << 'END-of-ddb/db_command.c.patch'
X*** /usr/src/syschanges/sys.originals/ddb/db_command.c Thu Apr 16 00:00:20 1992
X--- /usr/src/sys.386bsd/ddb/db_command.c Sun Aug 23 16:10:49 1992
X***************
X*** 515,531 ****
X args[5], args[6], args[7], args[8], args[9] );
X db_printf("%#n\n", retval);
X }
X-
X- int
X- strcmp(s1, s2)
X- register const char *s1, *s2;
X- {
X- while (*s1 == *s2++)
X- if (*s1++ == 0)
X- return (0);
X- return (*(unsigned char *)s1 - *(unsigned char *)--s2);
X- }
X-
X-
X-
X-
X--- 515,517 ----
END-of-ddb/db_command.c.patch
echo x - kern/kern_subr.c.patch
sed 's/^X//' >kern/kern_subr.c.patch << 'END-of-kern/kern_subr.c.patch'
X*** /usr/src/syschanges/sys.originals/kern/kern_subr.c Mon Jul 13 07:24:35 1992
X--- /usr/src/sys.386bsd/kern/kern_subr.c Sun Aug 23 16:11:29 1992
X***************
X*** 199,204 ****
X--- 199,220 ----
X *to = '\0';
X }
X
X+
X+ int
X+ strcmp(s1, s2)
X+ register const char *s1, *s2;
X+ {
X+ while (*s1 == *s2++)
X+ if (*s1++ == 0)
X+ return (0);
X+ return (*(unsigned char *)s1 - *(unsigned char *)--s2);
X+ }
X+
X+
X+
X+
X+
X+
X #ifndef lint /* unused except by ct.c, other oddities XXX */
X /*
X * Get next character written in by user from uio.
END-of-kern/kern_subr.c.patch
echo x - i386/isa/clock.c.patch
sed 's/^X//' >i386/isa/clock.c.patch << 'END-of-i386/isa/clock.c.patch'
X*** /usr/src/syschanges/sys.originals/i386/isa/clock.c Tue Dec 24 14:23:38 1991
X--- /usr/src/sys.386bsd/i386/isa/clock.c Sun Aug 23 20:27:24 1992
X***************
X*** 49,62 ****
X
X #define DAYST 119
X #define DAYEN 303
X
X startrtclock() {
X int s;
X
X /* initialize 8253 clock */
X outb (IO_TIMER1+3, 0x36);
X! outb (IO_TIMER1, 1193182/hz);
X! outb (IO_TIMER1, (1193182/hz)/256);
X
X /* initialize brain-dead battery powered clock */
X outb (IO_RTC, RTC_STATUSA);
X--- 49,65 ----
X
X #define DAYST 119
X #define DAYEN 303
X+ #define XTALSPEED 1193182
X
X startrtclock() {
X int s;
X
X+ findcpuspeed(); /* use the clock (while it's free)
X+ to find the cpu speed */
X /* initialize 8253 clock */
X outb (IO_TIMER1+3, 0x36);
X! outb (IO_TIMER1, XTALSPEED/hz);
X! outb (IO_TIMER1, (XTALSPEED/hz)/256);
X
X /* initialize brain-dead battery powered clock */
X outb (IO_RTC, RTC_STATUSA);
X***************
X*** 71,76 ****
X--- 74,105 ----
X outb (IO_RTC+1, 0);
X }
X
X+ unsigned int delaycount; /* calibrated loop variable (1 millisecond) */
X+
X+ #define FIRST_GUESS 0x2000
X+ findcpuspeed()
X+ {
X+ unsigned char low;
X+ unsigned int remainder;
X+
X+ /* Put counter in count down mode */
X+ outb(IO_TIMER1+3, 0x34);
X+ outb(IO_TIMER1, 0xff);
X+ outb(IO_TIMER1, 0xff);
X+ delaycount = FIRST_GUESS;
X+ spinwait(1);
X+ /* Read the value left in the counter */
X+ low = inb(IO_TIMER1); /* least siginifcant */
X+ remainder = inb(IO_TIMER1); /* most significant */
X+ remainder = (remainder<<8) + low ;
X+ /* Formula for delaycount is :
X+ * (loopcount * timer clock speed)/ (counter ticks * 1000)
X+ */
X+ delaycount = (FIRST_GUESS * (XTALSPEED/1000)) / (0xffff-remainder);
X+ }
X+
X+
X+
X /* convert 2 digit BCD number */
X bcd(i)
X int i;
X***************
X*** 204,206 ****
X--- 233,249 ----
X setidt(ICU_OFFSET+0, &V(clk), SDT_SYS386IGT, SEL_KPL);
X splnone();
X }
X+
X+
X+
X+
X+ spinwait(millisecs)
X+ int millisecs; /* number of milliseconds to delay */
X+ {
X+ int i, j;
X+
X+ for (i=0;i<millisecs;i++)
X+ for (j=0;j<delaycount;j++)
X+ ;
X+ }
X+
END-of-i386/isa/clock.c.patch
echo x - i386/conf/Makefile.i386.patch
sed 's/^X//' >i386/conf/Makefile.i386.patch << 'END-of-i386/conf/Makefile.i386.patch'
X*** /usr/src/syschanges/sys.originals/i386/conf/Makefile.i386 Mon Feb 24 14:52:46 1992
X--- /usr/src/sys.386bsd/i386/conf/Makefile.i386 Mon Aug 24 13:02:30 1992
X***************
X*** 38,44 ****
X SYSTEM_OBJS=locore.o ${OBJS} param.o ioconf.o conf.o
X SYSTEM_DEP=Makefile symbols.sort ${SYSTEM_OBJS}
X SYSTEM_LD_HEAD= @echo loading $@; rm -f $@
X! SYSTEM_LD= @${LD} -z -T FE000000 -o $@ -X ${SYSTEM_OBJS}
X SYSTEM_LD_TAIL= @echo rearranging symbols; symorder symbols.sort $@; size $@; chmod 755 $@
X
X %OBJS
X--- 38,44 ----
X SYSTEM_OBJS=locore.o ${OBJS} param.o ioconf.o conf.o
X SYSTEM_DEP=Makefile symbols.sort ${SYSTEM_OBJS}
X SYSTEM_LD_HEAD= @echo loading $@; rm -f $@
X! SYSTEM_LD= @${LD} -z -T FE000000 -o $@ -X vers.o ${SYSTEM_OBJS}
X SYSTEM_LD_TAIL= @echo rearranging symbols; symorder symbols.sort $@; size $@; chmod 755 $@
X
X %OBJS
X***************
X*** 63,71 ****
X
X locore.o: assym.s ${I386}/i386/locore.s machine/trap.h machine/psl.h \
X machine/pte.h vector.s ${I386}/isa/icu.s ${I386}/isa/isa.h \
X! ${I386}/isa/icu.h
X ${CPP} -I. -DLOCORE ${COPTS} ${I386}/i386/locore.s | \
X ${AS} ${ASFLAGS} -o locore.o
X
X # the following is necessary because autoconf.o depends on #if GENERIC
X autoconf.o: Makefile
X--- 63,74 ----
X
X locore.o: assym.s ${I386}/i386/locore.s machine/trap.h machine/psl.h \
X machine/pte.h vector.s ${I386}/isa/icu.s ${I386}/isa/isa.h \
X! ${I386}/isa/icu.h vers.o
X ${CPP} -I. -DLOCORE ${COPTS} ${I386}/i386/locore.s | \
X ${AS} ${ASFLAGS} -o locore.o
X+
X+ vers.c: Makefile
X+ sh ../../conf/newvers.sh
X
X # the following is necessary because autoconf.o depends on #if GENERIC
X autoconf.o: Makefile
END-of-i386/conf/Makefile.i386.patch
echo x - i386/i386/conf.c.patch
sed 's/^X//' >i386/i386/conf.c.patch << 'END-of-i386/i386/conf.c.patch'
X*** /usr/src/syschanges/sys.originals/i386/i386/conf.c Sat May 30 16:48:08 1992
X--- /usr/src/sys.386bsd/i386/i386/conf.c Wed Sep 23 01:41:37 1992
X***************
X*** 74,79 ****
X--- 74,122 ----
X #define assize NULL
X #endif
X
X+ #include "sd.h"
X+ #if NSD > 0
X+ int sdopen(),sdclose(),sdstrategy(),sdioctl();
X+ int /*sddump(),*/sdsize();
X+ #define sddump enxio
X+ #else
X+ #define sdopen enxio
X+ #define sdclose enxio
X+ #define sdstrategy enxio
X+ #define sdioctl enxio
X+ #define sddump enxio
X+ #define sdsize NULL
X+ #endif
X+
X+ #include "st.h"
X+ #if NST > 0
X+ int stopen(),stclose(),ststrategy(),stioctl();
X+ /*int stdump(),stsize();*/
X+ #define stdump enxio
X+ #define stsize NULL
X+ #else
X+ #define stopen enxio
X+ #define stclose enxio
X+ #define ststrategy enxio
X+ #define stioctl enxio
X+ #define stdump enxio
X+ #define stsize NULL
X+ #endif
X+
X+ #include "cd.h"
X+ #if NCD > 0
X+ int cdopen(),cdclose(),cdstrategy(),cdioctl();
X+ int /*cddump(),*/cdsize();
X+ #define cddump enxio
X+ #else
X+ #define cdopen enxio
X+ #define cdclose enxio
X+ #define cdstrategy enxio
X+ #define cdioctl enxio
X+ #define cddump enxio
X+ #define cdsize NULL
X+ #endif
X+
X #include "wt.h"
X #if NWT > 0
X int wtopen(),wtclose(),wtstrategy(),wtioctl();
X***************
X*** 114,121 ****
X--- 157,173 ----
X fddump, fdsize, NULL },
X { wtopen, wtclose, wtstrategy, wtioctl, /*3*/
X wtdump, wtsize, B_TAPE },
X+ #if NSD > 0
X+ { sdopen, sdclose, sdstrategy, sdioctl, /*4*/
X+ sddump, sdsize, NULL },
X+ #else NSD > 0
X { asopen, asclose, asstrategy, asioctl, /*4*/
X asdump, assize, NULL },
X+ #endif NSD > 0
X+ { stopen, stclose, ststrategy, stioctl, /*5*/
X+ stdump, stsize, NULL },
X+ { cdopen, cdclose, cdstrategy, cdioctl, /*6*/
X+ cddump, cdsize, NULL },
X };
X int nblkdev = sizeof (bdevsw) / sizeof (bdevsw[0]);
X
X***************
X*** 211,219 ****
X--- 263,283 ----
X { pcopen, pcclose, pcread, pcwrite, /*C*/
X pcioctl, nullop, nullop, &pccons,
X ttselect, pcmmap, NULL },
X+ #if NSD > 0
X+ { sdopen, sdclose, rawread, rawwrite, /*D*/
X+ sdioctl, enodev, nullop, NULL,
X+ seltrue, enodev, sdstrategy },
X+ #else NSD > 0
X { asopen, asclose, rawread, rawwrite, /*D*/
X asioctl, enodev, nullop, NULL,
X seltrue, enodev, asstrategy },
X+ #endif NSD > 0
X+ { stopen, stclose, rawread, rawwrite, /*E*/
X+ stioctl, enodev, nullop, NULL,
X+ seltrue, enodev, ststrategy },
X+ { cdopen, cdclose, rawread, enodev, /*F*/
X+ cdioctl, enodev, nullop, NULL,
X+ seltrue, enodev, cdstrategy },
X };
X int nchrdev = sizeof (cdevsw) / sizeof (cdevsw[0]);
X
END-of-i386/i386/conf.c.patch
echo x - i386/isa/isa.h.patch
sed 's/^X//' >i386/isa/isa.h.patch << 'END-of-i386/isa/isa.h.patch'
X*** /usr/src/syschanges/sys.originals/i386/isa/isa.h Tue May 12 21:51:02 1992
X--- /usr/src/sys.386bsd/i386/isa/isa.h Sat Sep 26 18:35:12 1992
X***************
X*** 86,93 ****
X /* 0x280 - 0x2F7 Open */
X
X #define IO_COM2 0x2f8 /* COM2 i/o address */
X
X! /* 0x300 - 0x36F Open */
X
X #define IO_FD2 0x370 /* secondary base i/o address */
X #define IO_LPT1 0x378 /* Parallel Port #1 */
X--- 86,98 ----
X /* 0x280 - 0x2F7 Open */
X
X #define IO_COM2 0x2f8 /* COM2 i/o address */
X+ /* 0x300 - 0x32F Open */
X
X! #define IO_BT0 0x330 /* bustek 742a default addr. */
X! #define IO_AHA0 0x330 /* adaptec 1542 default addr. */
X! #define IO_BT1 0x334 /* bustek 742a default addr. */
X! #define IO_AHA1 0x334 /* adaptec 1542 default addr. */
X! /* 0x338 - 0x36F Open */
X
X #define IO_FD2 0x370 /* secondary base i/o address */
X #define IO_LPT1 0x378 /* Parallel Port #1 */
END-of-i386/isa/isa.h.patch
echo x - i386/conf/devices.i386.patch
sed 's/^X//' >i386/conf/devices.i386.patch << 'END-of-i386/conf/devices.i386.patch'
X*** /usr/src/syschanges/sys.originals/i386/conf/devices.i386 Thu Jun 11 14:09:16 1992
X--- /usr/src/sys.386bsd/i386/conf/devices.i386 Wed Sep 16 21:59:36 1992
X***************
X*** 2,5 ****
X--- 2,6 ----
X dk 1
X fd 2
X wt 3
X+ sd 4
X as 4
END-of-i386/conf/devices.i386.patch
echo x - i386/conf/files.i386.patch
sed 's/^X//' >i386/conf/files.i386.patch << 'END-of-i386/conf/files.i386.patch'
X*** /usr/src/syschanges/sys.originals/i386/conf/files.i386 Mon May 25 12:25:04 1992
X--- /usr/src/sys.386bsd/i386/conf/files.i386 Fri Oct 2 00:22:42 1992
X***************
X*** 25,27 ****
X--- 25,35 ----
X i386/i386/db_disasm.c optional ddb
X i386/i386/db_interface.c optional ddb
X i386/i386/db_trace.c optional ddb
X+ i386/isa/aha1742.c optional ahb
X+ i386/isa/aha1542.c optional aha
X+ i386/isa/bt742a.c optional bt
X+ scsi/st.c optional st
X+ scsi/sd.c optional sd
X+ scsi/cd.c optional cd
X+ scsi/ch.c optional ch
X+ scsi/scsiconf.c optional scbus
END-of-i386/conf/files.i386.patch
echo x - MAKEDEV
sed 's/^X//' >MAKEDEV << 'END-of-MAKEDEV'
X#!/bin/sh -
X#
X# Copyright (c) 1990 The Regents of the University of California.
X# All rights reserved.
X#
X# Written and contributed by W. Jolitz 12/90
X#
X# Redistribution and use in source and binary forms are permitted provided
X# that: (1) source distributions retain this entire copyright notice and
X# comment, and (2) distributions including binaries display the following
X# acknowledgement: ``This product includes software developed by the
X# University of California, Berkeley and its contributors'' in the
X# documentation or other materials provided with the distribution and in
X# all advertising materials mentioning features or use of this software.
X# Neither the name of the University nor the names of its contributors may
X# be used to endorse or promote products derived from this software without
X# specific prior written permission.
X# THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
X# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
X# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
X#
X# @(#)MAKEDEV 5.2 (Berkeley) 6/22/90
X#
X# Device "make" file. Valid arguments:
X# std standard devices
X# local configuration specific devices
X#
X# Tapes:
X# wt* QIC-interfaced (e.g. not SCSI) 3M cartridge tape
X# st* "NEW type scsi tapes"
X#
X# Disks:
X# wd* "winchester" disk drives (ST506,IDE,ESDI,RLL,...)
X# fd* "floppy" disk drives (3 1/2", 5 1/4")
X# as* "SCSI" disk/tape/CDROM drives
X# sd* "NEW type scsi disks"
X#
X# Terminal ports:
X# com* standard PC COM ports
X#
X# Pseudo terminals:
X# pty* set of 16 master and slave pseudo terminals
X#
X# Printers:
X#
X# Call units:
X#
X# Special purpose devices:
X# flog* kernel logging device
X#
X
XPATH=/sbin:/bin/:/usr/bin:/usr/sbin:
Xumask 77
Xfor i
Xdo
Xcase $i in
X
Xstd)
X rm -f console drum mem kmdem null tty klog stdin stdout stderr
X mknod console c 0 0
X mknod drum c 4 0 ; chmod 640 drum ; chgrp kmem drum
X mknod kmem c 2 1 ; chmod 640 kmem ; chgrp kmem kmem
X mknod mem c 2 0 ; chmod 640 mem ; chgrp kmem mem
X mknod null c 2 2 ; chmod 666 null
X mknod tty c 1 0 ; chmod 666 tty
X mknod klog c 7 0 ; chmod 600 klog
X mknod stdin c 53 0 ; chmod 666 stdin
X mknod stdout c 53 1 ; chmod 666 stdout
X mknod stderr c 53 2 ; chmod 666 stderr
X rm -f fd/*
X mkdir fd > /dev/null 2>&1
X (cd fd && eval `echo "" | awk ' BEGIN { \
X for (i = 0; i < 64; i++) \
X printf("mknod %d c 53 %d;", i, i)}'`)
X chown -R bin.bin fd
X chmod 555 fd
X chmod 666 fd/*
X ;;
X
Xwt*)
X umask 2
X mknod wt0 b 3 0
X mknod rwt0 c 10 0
X umask 77
X ;;
X
Xst*)
X umask 2 ; unit=`expr $i : '..\(.*\)'`
X case $i in
X st*) name=st; chr=14;;
X esac
X rm -f r$name$unit nr$name$unit er$name$unit enr$name$unit
X case $unit in
X 0|1|2|3|4|5|6)
X mknod r${name}${unit} c $chr `expr $unit '*' 16 + 0`
X mknod nr${name}${unit} c $chr `expr $unit '*' 16 + 1`
X mknod er${name}${unit} c $chr `expr $unit '*' 16 + 2`
X mknod enr${name}${unit} c $chr `expr $unit '*' 16 + 3`
X chgrp operator r${name}${unit} nr${name}${unit} \
X er${name}${unit} enr${name}${unit}
X chmod 640 r${name}${unit} nr${name}${unit} \
X er${name}${unit} enr${name}${unit}
X ;;
X *)
X echo bad unit for tape in: $i
X ;;
X esac
X umask 77
X ;;
X
Xcd*)
X umask 2 ; unit=`expr $i : '..\(.*\)'`
X case $i in
X cd*) name=cd; blk=6; chr=15;;
X esac
X rm -f $name$unit? r$name$unit?
X case $unit in
X 0|1|2|3|4|5|6)
X mknod ${name}${unit}a b $blk `expr $unit '*' 8 + 0`
X mknod ${name}${unit}d b $blk `expr $unit '*' 8 + 3`
X mknod r${name}${unit}a c $chr `expr $unit '*' 8 + 0`
X mknod r${name}${unit}d c $chr `expr $unit '*' 8 + 3`
X chgrp operator ${name}${unit}[a-h] r${name}${unit}[a-h]
X chmod 640 ${name}${unit}[a-h] r${name}${unit}[a-h]
X ;;
X *)
X echo bad unit for disk in: $i
X ;;
X esac
X umask 77
X ;;
Xfd*|wd*|as*|sd*)
X umask 2 ; unit=`expr $i : '..\(.*\)'`
X case $i in
X fd*) name=fd; blk=2; chr=9;;
X wd*) name=wd; blk=0; chr=3;;
X as*) name=as; blk=4; chr=13;;
X sd*) name=sd; blk=4; chr=13;;
X esac
X rm -f $name$unit? r$name$unit?
X case $unit in
X 0|1|2|3|4|5|6)
X mknod ${name}${unit}a b $blk `expr $unit '*' 8 + 0`
X mknod ${name}${unit}b b $blk `expr $unit '*' 8 + 1`
X mknod ${name}${unit}c b $blk `expr $unit '*' 8 + 2`
X mknod ${name}${unit}d b $blk `expr $unit '*' 8 + 3`
X mknod ${name}${unit}e b $blk `expr $unit '*' 8 + 4`
X mknod ${name}${unit}f b $blk `expr $unit '*' 8 + 5`
X mknod ${name}${unit}g b $blk `expr $unit '*' 8 + 6`
X mknod ${name}${unit}h b $blk `expr $unit '*' 8 + 7`
X mknod r${name}${unit}a c $chr `expr $unit '*' 8 + 0`
X mknod r${name}${unit}b c $chr `expr $unit '*' 8 + 1`
X mknod r${name}${unit}c c $chr `expr $unit '*' 8 + 2`
X mknod r${name}${unit}d c $chr `expr $unit '*' 8 + 3`
X mknod r${name}${unit}e c $chr `expr $unit '*' 8 + 4`
X mknod r${name}${unit}f c $chr `expr $unit '*' 8 + 5`
X mknod r${name}${unit}g c $chr `expr $unit '*' 8 + 6`
X mknod r${name}${unit}h c $chr `expr $unit '*' 8 + 7`
X chgrp operator ${name}${unit}[a-h] r${name}${unit}[a-h]
X chmod 640 ${name}${unit}[a-h] r${name}${unit}[a-h]
X ;;
X *)
X echo bad unit for disk in: $i
X ;;
X esac
X umask 77
X ;;
X
Xcom*)
X unit=`expr $i : 'com\(.*\)'`
X rm -f com0$unit
X mknod com0$unit c 8 $unit
X ;;
X
Xpty*)
X class=`expr $i : 'pty\(.*\)'`
X case $class in
X 0) offset=0 name=p;;
X 1) offset=16 name=q;;
X 2) offset=32 name=r;;
X 3) offset=48 name=s;;
X# Note that telnetd, rlogind, and xterm (at least) only look at p-s.
X 4) offset=64 name=t;;
X *) echo bad unit for pty in: $i;;
X esac
X case $class in
X 0|1|2|3|4)
X umask 0
X eval `echo $offset $name | awk ' { b=$1; n=$2 } END {
X for (i = 0; i < 16; i++)
X printf("mknod tty%s%x c 5 %d; \
X mknod pty%s%x c 6 %d; ", \
X n, i, b+i, n, i, b+i); }'`
X umask 77
X if [ $class = 1 ]; then
X mv ttyqf ttyv0; mv ptyqf ptyv0
X fi
X ;;
X esac
X ;;
X
Xlocal)
X umask 0
X sh MAKEDEV.local
X ;;
X
Xesac
Xdone
END-of-MAKEDEV
exit