diff --git a/sys/conf/Make.pdpuba b/sys/conf/Make.pdpuba index de40445..33a57f6 100644 --- a/sys/conf/Make.pdpuba +++ b/sys/conf/Make.pdpuba @@ -14,11 +14,11 @@ U= ../pdpuba VPATH= ../pdpuba -CFILES= ${U}/br.c ${U}/dh.c ${U}/dn.c ${U}/dhu.c ${U}/dhv.c ${U}/dkbad.c \ +CFILES= ${U}/rp.c ${U}/dh.c ${U}/dn.c ${U}/dhu.c ${U}/dhv.c ${U}/dkbad.c \ ${U}/dr.c ${U}/dz.c ${U}/hk.c ${U}/ht.c ${U}/lp.c ${U}/ra.c ${U}/rk.c \ ${U}/rl.c ${U}/rx.c ${U}/si.c ${U}/tm.c ${U}/tmscp.c ${U}/tmscpdump.c \ ${U}/ts.c ${U}/xp.c -OBJS= br.o dh.o dhu.o dhv.o dkbad.o dn.o dr.o dz.o hk.o ht.o lp.o ra.o rk.o \ +OBJS= rp.o dh.o dhu.o dhv.o dkbad.o dn.o dr.o dz.o hk.o ht.o lp.o ra.o rk.o \ rl.o rx.o si.o tm.o tmscp.o tmscpdump.o ts.o xp.o dn.o .c.o: diff --git a/sys/conf/Make.sunix b/sys/conf/Make.sunix index 8ff1944..c096362 100644 --- a/sys/conf/Make.sunix +++ b/sys/conf/Make.sunix @@ -45,7 +45,7 @@ CONF= scb.o \ mch_dump.o mch_dzpdma.o mch_profile.o mch_start.o \ mch_trap.o mch_vars.o mch_xxx.o conf.o ioconf.o boot.o -BASE= br.o dh.o dhu.o dhv.o dkbad.o dr.o dz.o init_sysent.o kern_clock.o \ +BASE= rp.o dh.o dhu.o dhv.o dkbad.o dr.o dz.o init_sysent.o kern_clock.o \ kern_descrip.o kern_mman.o kern_proc.o kern_sig.o kern_subr.o \ kern_prot2.o kern_synch.o lp.o machdep.o ra.o ram.o si.o \ subr_rmap.o subr_xxx.o sys_inode.o trap.o tty.o \ diff --git a/sys/conf/SMALL b/sys/conf/SMALL new file mode 100644 index 0000000..c98f812 --- /dev/null +++ b/sys/conf/SMALL @@ -0,0 +1,263 @@ +# 1997/1/21 - RK added to GENERIC kernel (for use with Bob Supnik's emulator) +# 1995/12/14 - RX added to GENERIC kernel. +# 1995/07/21 - XP_PROBE removed. +# +# Machine configuration file for 2.11BSD distributed kernel. +# +# Format: +# name value comments +# An item's value may be either numerical, boolean or a string; if it's +# boolean, use "YES" or "NO" to set it or unset it, respectively. Use +# the default value and the comments field as indicators of the type of +# field it is. + +######################################### +# MACHINE DEPENDENT PARAMETERS # +######################################### + +# Machine type +# Split I/D and hardware floating point are required. +# UNIBUS support is always included, it only cost 1kb of text space and +# 94 bytes of D space for Qbus systems (obviously Unibus systems incur +# no penalty). + +# The define Q22 has been removed. The references to it were incorrect +# (i.e. using it to distinguish between an Emulex CS02 and a DH11) or +# inappropriate (the if_il.c driver should have been checking if a Unibus +# Map was present at runtime). + +#LINEHZ 50 # clock frequency European +LINEHZ 60 # clock frequency USA + +# PDP-11 machine type; allowable values are GENERIC, 44, 70, 73. GENERIC +# should only be used to build a distribution kernel. The only use of this +# option is to select the proper in-line PS instructions (references to the +# PSW use 'spl', 'mfps/mtps' or 'movb' instructions depending on the cpu type). +PDP11 GENERIC # distribution kernel +#PDP11 44 # PDP-11/44 +#PDP11 70 # PDP-11/70,45,50,55 +#PDP11 73 # PDP-11/73,53,83,93,84,94 + +######################################### +# GENERAL SYSTEM PARAMETERS # +######################################### + +IDENT GENERIC # machine name +MAXUSERS 4 # maxusers on machine + +# BOOTDEV is the letter combination denoting the autoboot device, +# or NONE if not using the autoboot feature. +BOOTDEV NONE # don't autoboot +#BOOTDEV dvhp # DIVA Comp/V boot device +#BOOTDEV hk6 # rk06 boot device +#BOOTDEV hk7 # rk07 boot device +#BOOTDEV ra # MSCP boot device +#BOOTDEV rl # rl01/02 boot device +#BOOTDEV rm # rm02/03/05 boot device +#BOOTDEV br # Eaton BR1537/BR1711 boot device +#BOOTDEV sc11 # Emulex SC11/B boot device +#BOOTDEV sc21 # Emulex SC21 boot device +#BOOTDEV si # si 9500 boot device + +# Timezone, in minutes west of GMT +#TIMEZONE 300 # EST +#TIMEZONE 360 # CST +#TIMEZONE 420 # WST +TIMEZONE 480 # PST +DST 1 # Daylight Savings Time (1 or 0) + +# Filesystem configuration +# Rootdev, swapdev etc. should be in terms of makedev. For example, +# if you have an SMD drive using the xp driver, rootdev would be xp0a, +# or "makedev(10,0)". Swapdev would be the b partition, xp0b, or +# "makedev(10,1)". The 10 is the major number of the device (the offset +# in the bdevsw table in conf.c) and the 0 and 1 are the minor numbers +# which correspond to the partitions as described in the section 4 manual +# pages. You can also get the major numbers from the MAKEDEV script in +# /dev. +PIPEDEV makedev(6,0) # makedev(6,0) rk0h +ROOTDEV makedev(6,0) # makedev(6,0) rk0h +#SWAPDEV makedev(6,8) # makedev(6,8) rk1h +SWAPDEV NODEV + +# DUMPROUTINE indicates which dump routine should be used. DUMPDEV +# should be in terms of makedev. If DUMPDEV is NODEV no automatic +# dumps will be taken, and DUMPROUTINE needs to be set to "nulldev" to +# resolve the reference. See param.h and ioconf.c for more information. +# DUMPLO should leave room for the kernel to start swapping without +# overwriting the dump. +DUMPLO 512 # dump start address +DUMPDEV NODEV # makedev(10,1) xp0b +DUMPROUTINE nulldev # no dump routine. +#DUMPROUTINE hkdump # hk driver dump routine +#DUMPROUTINE hpdump # hp driver dump routine +#DUMPROUTINE radump # ra driver dump routine +#DUMPROUTINE rldump # rl driver dump routine +#DUMPROUTINE rmdump # rm driver dump routine +#DUMPROUTINE brdump # br driver dump routine +#DUMPROUTINE sidump # si driver dump routine +#DUMPROUTINE xpdump # xp driver dump routine +#DUMPROUTINE tmsdump # tms driver dump routine + +######################################### +# KERNEL CONFIGURATION # +######################################### + +BADSECT NO # bad-sector forwarding +EXTERNALITIMES YES # map out inode time values +UCB_CLIST NO # clists moved from kernel data space +QUOTA NO # dynamic file system quotas + # NOTE -- *very* expensive +SOFUB_MAP YES # Software UNIBUS/QBUS map. Permits + # use of 18 bit controllers in a 22 bit + # Qbus system. Normally NO except for + # the GENERIC kernel or if you actually + # have an 18 bit RX02 on a Qbus system. + +# UCB_METER is fairly expensive, but various programs (iostat, vmstat, etc) +# use it. +UCB_METER NO # vmstat performance metering + +# NBUF is the size of the buffer cache, and is directly related to the UNIBUS +# mapping registers. There are 32 total mapping registers, of which 30 are +# available. The 0'th is used for CLISTS, and the 31st is used for the I/O +# page on some PDP's. It's suggested that you allow 7 mapping registers +# per UNIBUS character device so that you can move 56K of data on each device +# simultaneously. The rest should be assigned to the block buffer pool. So, +# if you have a DR-11 and a TM-11, you would leave 14 unassigned for them and +# allocate 16 to the buffer pool. Since each mapping register addresses 8 +# buffers for a 1K file system, NBUF would be 128. A possible exception would +# be to reduce the buffers to save on data space, as they were 24 bytes each +# Should be 'small' for GENERIC, so room for kernel + large program to run. +NBUF 32 # buffer cache, *must* be <= 240 + +# DIAGNOSTIC does various run-time checks, some of which are pretty +# expensive and at a high priority. Suggested use is when the kernel +# is crashing and you don't know why, otherwise run with it off. +DIAGNOSTIC NO # misc. diagnostic loops and checks + +######################################### +# PERIPHERALS: DISK DRIVES # +######################################### + +NRP 4 # RP03 + +NHK 0 # RK611, RK06/07 + +NRAC 0 # NRAD controllers +NRAD 0 # RX50, RC25, RD51/52/53, RA60/80/81 + +NRK 8 # RK05 + +NRL 0 # RL01/02 + +NRX 0 # RX02 + +NSI 0 # SI 9500 driver for CDC 9766 disks + +NXPC 0 # NXPD controllers (RH70/RH11 style) +NXPD 0 # RM02/03/05, RP04/05/06, CDC 9766, + # Ampex 9300, Diva, Fuji 160, SI Eagle. + +NRAM 0 # RAM disk size (512-byte blocks) + +######################################### +# PERIPHERALS: TAPE DRIVES # +######################################### + +NHT 0 # TE16, TU45, TU77 + +# Setting AVIVTM configures the TM driver for the AVIV 800/1600/6250 +# controller (the standard DEC TM only supports 800BPI). For more details, +# see /sys/pdpuba/tm.c. +NTM 1 # TM11 +AVIVTM NO # AVIV 800/1600/6250 controller + +NTS 0 # TS11 + +NTMSCP 0 # TMSCP controllers +NTMS 0 # TMSCP drives +TMSCP_DEBUG NO # debugging code in TMSCP drive (EXPENSIVE) + +######################################### +# PERIPHERALS: TERMINALS # +######################################### + +# NKL includes both KL11's and DL11's. +# It should always be at least 1, for the console. +NKL 0 # KL11, DL11 +NDH 0 # DH11; NDH is in units of boards (16 each) +CS02 NO # DH units above are really Emulex CS02 + # boards on a 22bit Qbus. +NDM 0 # DM11; NDM is in units of boards (16 each) +NDHU 0 # DHU11 +NDHV 0 # DHV11 +NDZ 1 # DZ11; NDZ is in units of boards (8 each) + +######################################### +# PERIPHERALS: OTHER # +######################################### +NDN 0 # DN11 dialer +NLP 0 # Line Printer +LP_MAXCOL 132 # Maximum number of columns on line printers +NDR 1 # DR11-W + +######################################### +# PSEUDO DEVICES, PROTOCOLS, NETWORKING # +######################################### +# Networking only works with split I/D and SUPERVISOR space, i.e. with the +# 11/44/53/70/73/83/84/93,94. NETHER should be non-zero for networking +# systems using any ethernet. CHECKSTACK makes sure the networking stack +# pointer and the kernel stack pointer don't collide; it's *very* expensive +# at 4 extra instructions for EVERY function call AND return, always left +# NO unless doing serious debugging. +INET NO # TCP/IP +CHECKSTACK NO # Kernel & Supervisor stack pointer checking +NETHER 0 # ether pseudo-device + +# Note, PTY's and the select(2) system call do not require the kernel to +# be configured for networking (INET). Note that you can allocate PTY's +# in any number (multiples of 8, of 16, even, odd, prime, whatever). Nothing +# in the kernel cares. PTY's cost 78 bytes apiece in kernel data space. You +# should probably have at least 8-10 since several applications use them: +# script, jove, window, rlogin, ... +NPTY 0 # pseudo-terminals - GENERIC sys needs NONE + +NEC 0 # 3Com Ethernet +NDE 0 # DEUNA/DELUA +NIL 0 # Interlan Ethernet +NSL 0 # Serial Line IP +NQE 0 # DEQNA +NQT 0 # DEQTA (DELQA-YM, DELQA-PLUS) +NVV 0 # V2LNI (Pronet) +NACC 0 # ACC LH/DH ARPAnet IMP interface +PLI NO # LH/DH is connected to a PLI +NIMP 0 # ARPAnet IMP 1822 interface + +# The following are untested in 2.11BSD; some are untested since before 2.9BSD +# Some won't even compile. Most will require modification. Good luck. +ENABLE34 NO # if have the ENABLE34 board + +NCSS 0 # DEC/CSS IMP11-A ARPAnet IMP interface +NDMC 0 # DMC11 +NEN 0 # Xerox prototype (3 Mb) Ethernet +NHY 0 # Hyperchannel +NS 0 # Xerox NS (XNS) +NSRI 0 # SRI DR11c ARPAnet IMP +NTB 0 # RS232 interface for Genisco/Hitachi tablets + +# Defining FPSIM to YES compiles a floating point simulator into the kernel +# which will catch floating point instruction traps from user space. This +# doesn't work at present. +FPSIM NO # floating point simulator + +# To enable profiling, the :splfix script must be changed to use spl6 instead +# of spl7 (see conf/:splfix.profile), also, you have to have a machine with a +# supervisor PAR/PDR pair, i.e. an 11/44/45/50/53/55/70/73/83/84, as well +# as both a KW11-L and a KW11-P. +# +# Note that profiling is not currently working. We don't have any plans on +# fixing it, so this is essentially a non-supported feature. +PROFILE NO # system profiling with KW11P clock + +INGRES NO # include the Ingres lock driver diff --git a/sys/conf/config b/sys/conf/config index 53b8ac8..17765ba 100755 --- a/sys/conf/config +++ b/sys/conf/config @@ -233,9 +233,9 @@ if [ $DUMPROUTINE = rldump ]; then echo "#define RL_DUMP 1" >> ../$MACHINE/rl.h fi -echo "#define NBR $NBR" > ../$MACHINE/br.h -if [ $DUMPROUTINE = brdump ]; then - echo "#define BR_DUMP 1" >> ../$MACHINE/br.h +echo "#define NRP $NRP" > ../$MACHINE/rp.h +if [ $DUMPROUTINE = rpdump ]; then + echo "#define RP_DUMP 1" >> ../$MACHINE/rp.h fi echo "#define NSI $NSI" > ../$MACHINE/si.h diff --git a/sys/mdec/rkuboot.s b/sys/mdec/rkuboot.s index 0e60fef..dedd78b 100644 --- a/sys/mdec/rkuboot.s +++ b/sys/mdec/rkuboot.s @@ -47,8 +47,8 @@ CHECKWORD= 6 nop / These two lines must be present or DEC br start / boot ROMs will refuse to run boot block! start: - mov r0,unit - mov r1,csr + clr unit + mov $177404,csr mov $..,sp mov sp,r1 clr r0 diff --git a/sys/pdp/conf.c b/sys/pdp/conf.c index 1a55632..fdfc401 100644 --- a/sys/pdp/conf.c +++ b/sys/pdp/conf.c @@ -23,12 +23,13 @@ int rawrw(); #include "rk.h" #if NRK > 0 -int rkopen(), rkstrategy(); +int rkopen(), rkstrategy(), rkroot(); daddr_t rksize(); #define rkclose nulldev #else #define rkopen nodev #define rkclose nodev +#define rkroot nulldev #define rkstrategy nodev #define rksize NULL #endif @@ -68,17 +69,17 @@ daddr_t xpsize(); #define xpsize NULL #endif -#include "br.h" -#if NBR > 0 -int bropen(), brstrategy(), brroot(); -daddr_t brsize(); -#define brclose nulldev +#include "rp.h" +#if NRP > 0 +int rpopen(), rpstrategy(), rproot(); +#define rpsize NULL +#define rpclose nulldev #else -#define bropen nodev -#define brclose nodev -#define brroot nulldev -#define brstrategy nodev -#define brsize NULL +#define rpopen nodev +#define rpclose nodev +#define rproot nulldev +#define rpstrategy nodev +#define rpsize NULL #endif #include "ht.h" @@ -191,7 +192,7 @@ struct bdevsw bdevsw[] = { raopen, raclose, rastrategy, raroot, rasize, 0, /* rk = 6 */ - rkopen, rkclose, rkstrategy, nulldev, rksize, + rkopen, rkclose, rkstrategy, rkroot, rksize, 0, /* rl = 7 */ rlopen, rlclose, rlstrategy, rlroot, rlsize, @@ -205,8 +206,8 @@ struct bdevsw bdevsw[] = { /* xp = 10 */ xpopen, xpclose, xpstrategy, xproot, xpsize, 0, -/* br = 11 */ - bropen, brclose, brstrategy, brroot, brsize, +/* rp = 11 */ + rpopen, rpclose, rpstrategy, rproot, rpsize, 0, /* tmscp = 12 (tu81/tk50) */ tmscpopen, tmscpclose, tmscpstrategy, nulldev, NULL, @@ -437,10 +438,10 @@ struct cdevsw cdevsw[] = { xpopen, xpclose, rawrw, rawrw, xpioctl, nulldev, 0, seltrue, xpstrategy, -/* br = 20 */ - bropen, brclose, rawrw, rawrw, +/* rp = 20 */ + rpopen, rpclose, rawrw, rawrw, nodev, nulldev, 0, seltrue, - brstrategy, + rpstrategy, /* dn = 21 */ dnopen, dnclose, dnread, dnwrite, dnioctl, nulldev, 0, seltrue, @@ -502,7 +503,7 @@ isdisk(dev, type) case 8: /* rx */ case 9: /* si */ case 10: /* xp */ - case 11: /* br */ + case 11: /* rp */ if (type == IFBLK) return (1); return (0); @@ -513,7 +514,7 @@ isdisk(dev, type) case 17: /* rrx */ case 18: /* rsi */ case 19: /* rxp */ - case 20: /* rbr */ + case 20: /* rrp */ if (type == IFCHR) return (1); /* fall through */ @@ -546,7 +547,7 @@ static char chrtoblktbl[MAXDEV] = { /* 17 */ 8, /* rx */ /* 18 */ 9, /* si */ /* 19 */ 10, /* xp */ - /* 20 */ 11, /* br */ + /* 20 */ 11, /* rp */ /* 21 */ NODEV, /* 22 */ NODEV, /* 23 */ 12, /* tmscp */ diff --git a/sys/pdp/machdep.c b/sys/pdp/machdep.c index 3cff738..7c81698 100644 --- a/sys/pdp/machdep.c +++ b/sys/pdp/machdep.c @@ -271,7 +271,7 @@ mapfree(bp) } } -#define SOFUB_DEBUG +#undef SOFUB_DEBUG #ifdef SOFUB_MAP /* @@ -330,8 +330,8 @@ register struct buf *bp; return(1); /* okay, < 256kb */ else if (bp->b_bcount > sofub_size) { - log(LOG_ERR, "I/O >10kb on %d,%d\n", - major(bp->b_dev),minor(bp->b_dev)); + log(LOG_ERR, "I/O >10kb on %d,%d count=%d\n", + major(bp->b_dev),minor(bp->b_dev), bp->b_bcount); bp->b_flags |= B_ERROR; bp->b_error = EFAULT; iodone(bp); diff --git a/sys/pdp/machdep2.c b/sys/pdp/machdep2.c index 2c24829..176828f 100644 --- a/sys/pdp/machdep2.c +++ b/sys/pdp/machdep2.c @@ -161,7 +161,7 @@ startup() */ #ifdef SOFUB_MAP -#define B (10240+64) +#define B (1024*60+64) sofub_size = (unsigned) B; diff --git a/sys/pdp/scb.s b/sys/pdp/scb.s index f648dae..8a06ddc 100644 --- a/sys/pdp/scb.s +++ b/sys/pdp/scb.s @@ -28,7 +28,7 @@ #include "ra.h" #include "rk.h" #include "rl.h" -#include "br.h" +#include "rp.h" #include "rx.h" #include "si.h" #include "sri.h" @@ -153,14 +153,17 @@ SETDOT(114) DEVTRAP(220, rkintr, br5) #endif +#if NTM > 0 /* TM-11 */ + DEVTRAP(224, tmintr, br5) +#endif SETDOT(240) TRAP(trap, br7+T_PIRQ) /* program interrupt request */ TRAP(trap, br7+T_ARITHTRAP) /* floating point */ TRAP(trap, br7+T_SEGFLT) /* segmentation violation */ -#if NBR > 0 - DEVTRAP(254, brintr, br5) /* EATON BR1537 or EATON BR1711 */ +#if NRP > 0 + DEVTRAP(254, rpintr, br5) /* RP03 */ #endif #if NXPD > 0 /* RM02/03/05, RP04/05/06 */ @@ -352,8 +355,8 @@ do_panic: HANDLER(rkintr) #endif -#if NBR > 0 - HANDLER(brintr) /* EATON BR1537/BR1711 */ +#if NRP > 0 + HANDLER(rpintr) /* RP03 */ #endif #if NXPD > 0 /* RM02/03/05, RP04/05/06 */ diff --git a/sys/pdpuba/rk.c b/sys/pdpuba/rk.c index 5043bcb..7c5b799 100644 --- a/sys/pdpuba/rk.c +++ b/sys/pdpuba/rk.c @@ -24,7 +24,7 @@ #include "map.h" #include "uba.h" -#define NRKBLK 4872 /* Number of blocks per drive */ +#define NRKBLK 6144 /* Number of blocks per drive */ struct rkdevice *RKADDR; @@ -43,6 +43,15 @@ static int rk_dkn = -1; /* number for iostat */ */ #endif +rkroot(csr) +register struct rkdevice *csr; +{ + + if (!csr) /* XXX */ + csr = (struct rkdevice *)0177400; /* XXX */ + rkattach(csr, 0); +} + rkattach(addr, unit) struct rkdevice *addr; { diff --git a/sys/OTHERS/rp03/rp.c b/sys/pdpuba/rp.c similarity index 78% rename from sys/OTHERS/rp03/rp.c rename to sys/pdpuba/rp.c index 8242ce4..d292e33 100644 --- a/sys/OTHERS/rp03/rp.c +++ b/sys/pdpuba/rp.c @@ -27,10 +27,23 @@ struct rpdevice *addr; #include "buf.h" #include "conf.h" #include "user.h" +#include "dk.h" +#include "disk.h" #include "rpreg.h" +#include "syslog.h" +#include "map.h" +#include "uba.h" struct rpdevice *RPADDR = (struct rpdevice *)0176710; +/* + * Structure of the disk driver partition tables + */ +struct size { + daddr_t nblocks; + short cyloff; +}; + #ifdef SHOULD_WORK_BUT_DOESN'T /* * Apparently, some controllers have problems getting to the "spare* @@ -61,21 +74,54 @@ struct size rp_sizes[] = { struct buf rptab; +#ifdef SOFUB_MAP + static int rpsoftmap = -1; /* -1 = OK to check for softmap + * 0 = Never use softmap + * 1 = Always use softmap + */ +#endif + #define RP_NSECT 10 #define RP_NTRAC 20 +#define rpunit(dev) (dkunit(dev) & 7) + +rproot(csr) +register struct rpdevice *csr; +{ + + if (!csr) /* XXX */ + csr = (struct rpdevice *)0176710; /* XXX */ + rpattach(csr, 0); +} rpattach(addr, unit) struct rpdevice *addr; { if (unit != 0) return(0); +#ifdef SOFUB_MAP + if (!ubmap && rpsoftmap == -1) + rpsoftmap = 1; +#endif RPADDR = addr; return(1); } +rpopen(dev, flag) + dev_t dev; + int flag; +{ + register int unit = rpunit(dev); + + if (unit >= NRP || !RPADDR) + return (ENXIO); + return (0); +} + rpstrategy(bp) register struct buf *bp; { + register int s; register struct buf *dp; register int unit; long sz; @@ -94,10 +140,18 @@ errexit: iodone(bp); return; } +#ifdef SOFUB_MAP + if (rpsoftmap == 1) + { + if (sofub_alloc(bp) == 0) + return; + } + else +#endif mapalloc(bp); bp->av_forw = NULL; unit >>= 3; - (void) _spl5(); + s = splbio(); dp = &rptab; if (dp->b_actf == NULL) dp->b_actf = bp; @@ -106,7 +160,7 @@ errexit: dp->b_actl = bp; if (dp->b_active == NULL) rpstart(); - (void) _spl0(); + splx(s); } rpstart() @@ -171,13 +225,9 @@ rpintr() printf("rp%d: write locked\n", minor(bp->b_dev)); else { -#ifdef UCB_DEVERR harderr(bp, "rp"); printf("er=%b ds=%b\n", rpaddr->rper, RPER_BITS, rpaddr->rpds, RPDS_BITS); -#else - deverror(bp, rpaddr->rper, rpaddr->rpds); -#endif if(rpaddr->rpds & (RPDS_SUFU | RPDS_SUSI | RPDS_HNF)) { rpaddr->rpcs.c[0] = RP_HSEEK | RP_GO; ctr = 0; @@ -198,6 +248,10 @@ rpintr() rptab.b_errcnt = 0; rptab.b_actf = bp->av_forw; bp->b_resid = -(rpaddr->rpwc << 1); +#ifdef SOFUB_MAP + if (rpsoftmap == 1) + sofub_relse(bp, bp->b_bcount - bp->b_resid); +#endif iodone(bp); rpstart(); } diff --git a/sys/OTHERS/rp03/rpreg.h b/sys/pdpuba/rpreg.h similarity index 100% rename from sys/OTHERS/rp03/rpreg.h rename to sys/pdpuba/rpreg.h diff --git a/sys/sys/init_main.c b/sys/sys/init_main.c index 5955e6d..56a8785 100644 --- a/sys/sys/init_main.c +++ b/sys/sys/init_main.c @@ -149,6 +149,9 @@ main() (void)(*bdevsw[major(bootdev)].d_root)(bootcsr); (void)(*bdevsw[major(swapdev)].d_root)((caddr_t) 0); /* XXX */ + (void)(*bdevsw[11].d_root)((caddr_t) 0); /* XXX: RP03 */ + (void)tmattach(0172520, 0); /* XXX: TM11 */ + /* * Now we find out how much swap space is available. Since 'nswap' is * a "u_int" we have to restrict the amount of swap to 65535 sectors (~32mb).