method.
-# $NetBSD: Makefile,v 1.19 1996/01/15 01:41:37 thorpej Exp $
-
+# $OpenBSD: Makefile,v 1.4 1997/01/17 08:32:37 downsj Exp $
+# $NetBSD: Makefile,v 1.22 1996/10/18 06:03:25 thorpej Exp $
# @(#)Makefile 8.1 (Berkeley) 6/10/93
NOPROG= noprog
NOMAN= noman
-SUBDIR= libsa
+#SUBDIR= libkern libsa
# RELOC=FFF00000 allows for boot prog up to FF000 (1044480) bytes long
RELOC= FFF00000
.PATH: ${S}/stand
INCPATH=-I${.CURDIR} -I${.CURDIR}/../.. -I${S} -I${S}/lib/libsa
-### find out what to use for libkern
-KERNREL=
-.include "$S/lib/libkern/Makefile.inc"
-LIBKERN= ${KERNLIB}
+
+.include "${.CURDIR}/libkern/Makefile.inc"
+LIBKERN= ${KERN_LIB}
.include "${.CURDIR}/libsa/Makefile.inc"
LIBSA= ${SA_LIB}
LIBS= ${OBJS} libdrive.a ${LIBSA} ${LIBKERN}
-BOOTS= pboot netboot sys_inst dboot dcopy tboot tcopy cat #ls
+BOOTS= uboot.lif inst.lif
+BOOTAOUTS=uboot inst
ALL= ${BOOTS} mkboot installboot
all: ${ALL}
srt0.o: ${.CURDIR}/srt0.s
${CC} ${INCPATH} ${DEFS} -c ${.CURDIR}/srt0.s
-tpsrt0.o: ${.CURDIR}/srt0.s
- ${CC} ${INCPATH} ${DEFS} -DTP -c ${.CURDIR}/srt0.s -o $@
-
-# new boot
-pboot: srt0.o pboot.o tgets.o conf.o ${LIBS}
- ${LD} -N -T ${RELOC} -e begin srt0.o pboot.o tgets.o conf.o ${LIBS} -o $@
- @size $@
- @echo $@ total size should not exceed 1044480 bytes
-
-ls: srt0.o ls.o conf.o ${LIBS}
- ${LD} -N -T ${RELOC} -e begin srt0.o ls.o conf.o ${LIBS} -o $@
- @size $@
- @echo $@ total size should not exceed 1044480 bytes
-
-cat: srt0.o cat.o conf.o ${LIBS}
- ${LD} -N -T ${RELOC} -e begin srt0.o cat.o conf.o ${LIBS} -o $@
- @size $@
- @echo $@ total size should not exceed 1044480 bytes
+# unified boot program (disk, network, tape)
+uboot.lif: uboot mkboot
+ ./mkboot uboot $@
-# installation
-sys_inst: srt0.o sys_inst.o clock.o instconf.o inst_netio.o tgets.o ${LIBS}
- ${LD} -N -T ${RELOC} -e begin srt0.o sys_inst.o clock.o instconf.o inst_netio.o tgets.o ${LIBS} -o $@
+uboot: srt0.o uboot.o tgets.o netio.o clock.o conf.o ${LIBS}
+ ${LD} -N -T ${RELOC} -e begin srt0.o uboot.o tgets.o netio.o clock.o \
+ conf.o ${LIBS} -o $@
@size $@
@echo $@ total size should not exceed 1044480 bytes
-instconf.o: ${.CURDIR}/conf.c
- ${CC} ${CFLAGS} -DSYS_INST -c ${.CURDIR}/conf.c -o $@
-
-inst_netio.o: ${.CURDIR}/netio.c
- ${CC} ${CFLAGS} -DSYS_INST -c ${.CURDIR}/netio.c -o $@
+# miniroot installation program
+inst.lif: inst mkboot
+ ./mkboot inst $@
-# bootable from network
-
-netboot: srt0.o netboot.o clock.o netconf.o netio.o tgets.o ${LIBS}
- ${LD} -N -T ${RELOC} -e begin srt0.o netboot.o clock.o netconf.o netio.o tgets.o ${LIBS} -o $@
+inst: srt0.o inst.o clock.o conf.o netio.o tgets.o ${LIBS}
+ ${LD} -N -T ${RELOC} -e begin srt0.o inst.o clock.o conf.o netio.o \
+ tgets.o ${LIBS} -o $@
@size $@
@echo $@ total size should not exceed 1044480 bytes
-netconf.o: ${.CURDIR}/conf.c
- ${CC} ${CFLAGS} -DNETBOOT -c ${.CURDIR}/conf.c -o $@
-
-# bootable from tape
-
-tboot: srt0.o tboot.o conf.o ${LIBS}
- ${LD} -N -T ${RELOC} -e begin srt0.o tboot.o conf.o ${LIBS} -o $@
- @size $@
- @echo $@ total size should not exceed 1044480 bytes
-
-tboot.o: ${.CURDIR}/boot.c
- ${CC} ${CFLAGS} -DJUSTASK -c ${.CURDIR}/boot.c -o $@
-
-tcopy: tpsrt0.o copy.o conf.o ${LIBS}
- ${LD} -N -T ${RELOC} -e begin tpsrt0.o copy.o conf.o ${LIBS} -o $@
- @size $@
- @echo $@ total size should not exceed 1044480 bytes
-
-# bootable from floppy or real disks
-
-dboot: srt0.o boot.o tapeconf.o ${LIBS}
- ${LD} -N -T ${RELOC} -e begin srt0.o boot.o tapeconf.o ${LIBS} -o $@
- @size $@
- @echo $@ text+data size should not exceed 57344 bytes
- @echo $@ total size should not exceed 1044480 bytes
-
-tapeconf.o: ${.CURDIR}/conf.c
- ${CC} ${CFLAGS} -DTAPEBOOT -c ${.CURDIR}/conf.c -o $@
-
-dcopy: srt0.o copy.o conf.o ${LIBS}
- ${LD} -N -T ${RELOC} -e begin srt0.o copy.o conf.o ${LIBS} -o $@
-
+# helper program ... turns OMAGIC into LIF
mkboot: ${.CURDIR}/mkboot.c
${CC} ${CFLAGS} ${.CURDIR}/mkboot.c -o $@
# utilities
clean::
- rm -f *.o *.exe *.i errs make.out
- rm -f a.out pboot cat ls tboot tcopy
- rm -f boot[a-z]? boot[a-wyz][a-z].c conf[a-wyz][a-z].c
- rm -f core sboot
- rm -f libdrive.a mkboot dboot dcopy installboot *.lif
-
-install: mkboot installboot ${ALL}
- ./mkboot pboot bsdboot.lif
- ./mkboot netboot netboot.lif
- ./mkboot sys_inst sys_inst.lif
- ./mkboot dboot diskboot.lif
- ./mkboot tboot tcopy tapeboot.lif
- install -c -o ${BINOWN} -g ${BINGRP} -m 555 installboot \
+ rm -f *.o *.i
+ rm -f a.out ${BOOTS} ${BOOTAOUTS}
+ rm -f libdrive.a mkboot installboot
+
+install:
+ ${INSTALL} -d -m 755 -o ${BINOWN} -g ${BINGRP} \
+ ${DESTDIR}/usr/mdec/rbootd
+ ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 555 installboot \
${DESTDIR}/usr/mdec
- install -c -o ${BINOWN} -g ${BINGRP} -m 444 bsdboot.lif \
- ${DESTDIR}/usr/mdec/rdboot
+ ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 uboot.lif \
+ ${DESTDIR}/usr/mdec
+ rm -f ${DESTDIR}/usr/mdec/rdboot
+ ln ${DESTDIR}/usr/mdec/uboot.lif ${DESTDIR}/usr/mdec/rdboot
rm -f ${DESTDIR}/usr/mdec/bootrd
- ln ${DESTDIR}/usr/mdec/rdboot ${DESTDIR}/usr/mdec/bootrd
+ ln ${DESTDIR}/usr/mdec/uboot.lif ${DESTDIR}/usr/mdec/bootrd
rm -f ${DESTDIR}/usr/mdec/sdboot
- ln ${DESTDIR}/usr/mdec/rdboot ${DESTDIR}/usr/mdec/sdboot
+ ln ${DESTDIR}/usr/mdec/uboot.lif ${DESTDIR}/usr/mdec/sdboot
rm -f ${DESTDIR}/usr/mdec/bootsd
- ln ${DESTDIR}/usr/mdec/sdboot ${DESTDIR}/usr/mdec/bootsd
- install -d -m 755 -o ${BINOWN} -g ${BINGRP} ${DESTDIR}/usr/mdec/rbootd
- install -c -o ${BINOWN} -g ${BINGRP} -m 444 netboot.lif \
- ${DESTDIR}/usr/mdec/rbootd/SYS_NBOOT
- install -c -o ${BINOWN} -g ${BINGRP} -m 444 sys_inst.lif \
- ${DESTDIR}/usr/mdec/rbootd/SYS_INST
- install -c -o ${BINOWN} -g ${BINGRP} -m 644 tapeboot.lif \
- ${DESTDIR}/usr/mdec/bootct
+ ln ${DESTDIR}/usr/mdec/uboot.lif ${DESTDIR}/usr/mdec/bootsd
+ rm -f ${DESTDIR}/usr/mdec/ctboot
+ ln ${DESTDIR}/usr/mdec/uboot.lif ${DESTDIR}/usr/mdec/ctboot
+ rm -f ${DESTDIR}/usr/mdec/bootct
+ ln ${DESTDIR}/usr/mdec/uboot.lif ${DESTDIR}/usr/mdec/bootct
+ rm -f ${DESTDIR}/usr/mdec/rbootd/SYS_UBOOT
+ ln ${DESTDIR}/usr/mdec/uboot.lif ${DESTDIR}/usr/mdec/rbootd/SYS_UBOOT
+ ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 inst.lif \
+ ${DESTDIR}/usr/mdec
+ rm -f ${DESTDIR}/usr/mdec/rbootd/SYS_INST
+ ln ${DESTDIR}/usr/mdec/inst.lif ${DESTDIR}/usr/mdec/rbootd/SYS_INST
+
+#obj: _SUBDIRUSE
.include <bsd.prog.mk>
-.include <bsd.subdir.mk>
-/* $NetBSD: autoconf.c,v 1.9 1995/08/05 16:47:34 thorpej Exp $ */
+/* $OpenBSD: autoconf.c,v 1.2 1997/01/17 08:32:38 downsj Exp $ */
+/* $NetBSD: autoconf.c,v 1.11 1996/10/14 07:26:06 thorpej Exp $ */
/*
* Copyright (c) 1988 University of Utah.
* WARNING: major numbers must match bdevsw indices in hp300/conf.c.
*/
char rom2mdev[] = {
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0-13: none */
+ 0, 0, /* 0-1: none */
+ 6, /* 2: network device; special */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 3-13: none */
4, /* 14: SCSI disk */
0, /* 15: none */
2, /* 16: CS/80 device on HPIB */
extern int internalhpib;
-#if 0
+#ifdef PRINTROMINFO
printrominfo()
{
struct rominfo *rp = (struct rominfo *)ROMADDR;
}
find_devs();
cninit();
-#if 0
+#ifdef PRINTROMINFO
printrominfo();
#endif
hpibinit();
struct rominfo *rp = (struct rominfo *) ROMADDR;
u_long bdev = 0;
register struct hp_hw *hw;
- int sc;
+ int sc, type, ctlr, slave, punit;
sc = (rp->msus >> 8) & 0xFF;
for (hw = sc_table; hw < &sc_table[MAXCTLRS]; hw++)
if (hw->hw_sc == sc)
break;
- bdev |= rom2mdev[(rp->msus >> 24) & 0x1F] << B_TYPESHIFT;
- bdev |= 0 << B_PARTITIONSHIFT;
- bdev |= ((rp->msus >> 16) & 0xFF) << B_UNITSHIFT;
- bdev |= (rp->msus & 0xFF) << B_CONTROLLERSHIFT;
- bdev |= (int)hw->hw_pa << B_ADAPTORSHIFT;
- bdev |= B_DEVMAGIC;
-#if 0
+
+ type = rom2mdev[(rp->msus >> 24) & 0x1F];
+ ctlr = (int)hw->hw_pa;
+ slave = (rp->msus & 0xFF);
+ punit = ((rp->msus >> 16) & 0xFF);
+
+ bdev = MAKEBOOTDEV(type, ctlr, slave, punit, 0);
+
+#ifdef PRINTROMINFO
printf("msus %x -> bdev %x\n", rp->msus, bdev);
#endif
return (bdev);
* Probe all DIO select codes (0 - 32), the internal display address,
* and DIO-II select codes (132 - 256).
*
- * Note that we only care about displays, SCSIs and HP-IBs.
+ * Note that we only care about displays, LANCEs, SCSIs and HP-IBs.
*/
find_devs()
{
case 128: /* 98624A */
hw->hw_type = C_HPIB;
break;
+ case 21: /* LANCE */
+ hw->hw_type = D_LAN;
+ break;
case 57: /* Displays */
hw->hw_type = D_BITMAP;
hw->hw_secid = id_reg[0x15];
+/* $OpenBSD: boot.c,v 1.3 1997/01/17 08:32:39 downsj Exp $ */
/* $NetBSD: boot.c,v 1.6 1995/02/21 09:06:13 mycroft Exp $ */
/*-
+/* $OpenBSD: clock.c,v 1.2 1997/01/17 08:32:39 downsj Exp $ */
/* $NetBSD: clock.c,v 1.3 1995/02/20 00:12:09 mycroft Exp $ */
/*
-/* $NetBSD: conf.c,v 1.10 1995/09/23 17:28:11 thorpej Exp $ */
+/* $OpenBSD: conf.c,v 1.2 1997/01/17 08:32:40 downsj Exp $ */
+/* $NetBSD: conf.c,v 1.12 1996/10/14 07:29:15 thorpej Exp $ */
/*
* Copyright (c) 1982, 1986, 1990, 1993
#include <sys/param.h>
#include "stand.h"
+#include "samachdep.h"
-#if defined(NETBOOT) || defined(SYS_INST)
#include <sys/socket.h>
#include <net/if.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include "nfs.h"
-
-#endif /* NETBOOT || SYS_INST */
-
-#ifndef NETBOOT
+#include "rawfs.h"
#include "ufs.h"
-#endif /* ! NETBOOT */
int debug = 0; /* XXX */
/*
* Device configuration
*/
-#if defined(NETBOOT) || defined(SYS_INST)
int netstrategy __P((void *, int, daddr_t, size_t, void *, size_t *));
int netopen __P((struct open_file *, ...));
int netclose __P((struct open_file *));
#define netioctl noioctl
-#endif /* NETBOOT || SYS_INST */
-#ifndef NETBOOT
-/* XXX: no support for tapes in SYS_INST yet. */
-#ifdef TAPEBOOT
int ctstrategy __P((void *, int, daddr_t, size_t, void *, size_t *));
int ctopen __P((struct open_file *, ...));
int ctclose __P((struct open_file *));
-#else
-#define ctstrategy \
- (int (*) __P((void *, int, daddr_t, size_t, void *, size_t *)))nullsys
-#define ctopen (int (*) __P((struct open_file *, ...)))nodev
-#define ctclose (int (*) __P((struct open_file *)))nullsys
-#endif /* TAPEBOOT */
-
#define ctioctl noioctl
int rdstrategy __P((void *, int, daddr_t, size_t, void *, size_t *));
#define xxopen (int (*) __P((struct open_file *, ...)))nodev
#define xxclose (int (*) __P((struct open_file *)))nullsys
-#endif /* ! NETBOOT */
-
+/*
+ * Note: "le" isn't a major offset.
+ */
struct devsw devsw[] = {
-#ifdef NETBOOT
- { "le", netstrategy, netopen, netclose, netioctl }, /*0*/
-#else
{ "ct", ctstrategy, ctopen, ctclose, ctioctl }, /*0*/
{ "??", xxstrategy, xxopen, xxclose, noioctl }, /*1*/
{ "rd", rdstrategy, rdopen, rdclose, rdioctl }, /*2*/
{ "??", xxstrategy, xxopen, xxclose, noioctl }, /*3*/
{ "sd", sdstrategy, sdopen, sdclose, sdioctl }, /*4*/
-#ifdef SYS_INST
- { "le", netstrategy, netopen, netclose, netioctl },
-#endif /* SYS_INST */
-#endif /* NETBOOT */
+ { "??", xxstrategy, xxopen, xxclose, noioctl }, /*5*/
+ { "le", netstrategy, netopen, netclose, netioctl },/*6*/
+};
+int ndevs = (sizeof(devsw) / sizeof(devsw[0]));
+
+extern struct netif_driver le_driver;
+
+struct netif_driver *netif_drivers[] = {
+ &le_driver,
};
-int ndevs = (sizeof(devsw)/sizeof(devsw[0]));
+int n_netif_drivers = (sizeof(netif_drivers) / sizeof(netif_drivers[0]));
+
+/*
+ * Physical unit/lun detection.
+ */
+int punitzero __P((int, int, int *));
+
+int
+punitzero(ctlr, slave, punit)
+ int ctlr, slave, *punit;
+{
+
+ *punit = 0;
+ return (0);
+}
+
+extern int ctpunit __P((int, int, int *));
+#define xxpunit punitzero
+#define rdpunit punitzero
+#define sdpunit punitzero
+#define lepunit punitzero
+
+struct punitsw punitsw[] = {
+ { ctpunit },
+ { xxpunit },
+ { rdpunit },
+ { xxpunit },
+ { sdpunit },
+ { xxpunit },
+ { lepunit },
+};
+int npunit = (sizeof(punitsw) / sizeof(punitsw[0]));
/*
* Filesystem configuration
*/
-struct fs_ops file_system[] = {
-#ifndef NETBOOT
+struct fs_ops file_system_rawfs[] = {
+ { rawfs_open, rawfs_close, rawfs_read, rawfs_write, rawfs_seek,
+ rawfs_stat },
+};
+
+struct fs_ops file_system_ufs[] = {
{ ufs_open, ufs_close, ufs_read, ufs_write, ufs_seek, ufs_stat },
-#endif /* ! NETBOOT */
-#if defined(NETBOOT) || defined(SYS_INST)
- { nfs_open, nfs_close, nfs_read, nfs_write, nfs_seek, nfs_stat },
-#endif /* NETBOOT || SYS_INST */
};
-int nfsys = (sizeof(file_system) / sizeof(file_system[0]));
+struct fs_ops file_system_nfs[] = {
+ { nfs_open, nfs_close, nfs_read, nfs_write, nfs_seek, nfs_stat },
+};
-#if defined(NETBOOT) || defined(SYS_INST)
-extern struct netif_driver le_driver;
+struct fs_ops file_system[1];
+int nfsys = 1; /* we always know which one we want */
-struct netif_driver *netif_drivers[] = {
- &le_driver,
-};
-int n_netif_drivers = sizeof(netif_drivers)/sizeof(netif_drivers[0]);
-#endif /* NETBOOT */
/*
* Inititalize controllers
*/
void ctlrinit()
{
-#if defined(NETBOOT) || defined(SYS_INST)
leinit();
-#endif /* NETBOOT || SYS_INST */
-#ifndef NETBOOT
hpibinit();
scsiinit();
-#endif /* ! NETBOOT */
}
+/* $OpenBSD: cons.c,v 1.2 1997/01/17 08:32:40 downsj Exp $ */
/* $NetBSD: cons.c,v 1.9 1995/10/04 06:54:42 thorpej Exp $ */
/*
+/* $OpenBSD: consdefs.h,v 1.2 1997/01/17 08:32:41 downsj Exp $ */
/* $NetBSD: consdefs.h,v 1.3 1995/10/04 06:54:43 thorpej Exp $ */
/*
-/* $NetBSD: ct.c,v 1.7 1995/09/23 17:17:03 thorpej Exp $ */
+/* $OpenBSD: ct.c,v 1.2 1997/01/17 08:32:42 downsj Exp $ */
+/* $NetBSD: ct.c,v 1.9 1996/10/14 07:29:57 thorpej Exp $ */
/*
* Copyright (c) 1982, 1990, 1993
#define MTFSF 10
#define MTREW 11
+char ctio_buf[MAXBSIZE];
+
struct ctinfo {
short hwid;
short punit;
return (0);
if (ctident(ctlr, unit) < 0)
return (0);
+ bzero(&ct_ssmc, sizeof(ct_ssmc));
ct_ssmc.unit = C_SUNIT(rs->sc_punit);
ct_ssmc.cmd = C_SSM;
ct_ssmc.fefm = FEF_MASK;
return(id);
}
+int
+ctpunit(ctlr, slave, punit)
+ int ctlr, slave, *punit;
+{
+ register struct ct_softc *rs;
+
+ if (ctlr >= NHPIB || hpibalive(ctlr) == 0)
+ return(EADAPT);
+ if (slave >= NCT)
+ return(ECTLR);
+ rs = &ct_softc[ctlr][slave];
+
+ if (rs->sc_alive == 0)
+ return(ENXIO);
+
+ *punit = rs->sc_punit;
+ return (0);
+}
+
ctopen(f, ctlr, unit, part)
struct open_file *f;
int ctlr, unit, part;
{
register struct ct_softc *rs;
register int skip;
+ size_t resid;
if (ctlr >= NHPIB || hpibalive(ctlr) == 0)
return(EADAPT);
if (unit >= NCT)
return(ECTLR);
rs = &ct_softc[ctlr][unit];
+ rs->sc_blkno = 0;
rs->sc_unit = unit;
rs->sc_ctlr = ctlr;
if (rs->sc_alive == 0)
if (ctinit(ctlr, unit) == 0)
return(ENXIO);
f->f_devdata = (void *)rs;
- ctstrategy(f, MTREW);
+ ctstrategy(f->f_devdata, MTREW, 0, 0, ctio_buf, &resid);
skip = part;
while (skip--)
- ctstrategy(f, MTFSF);
+ ctstrategy(f->f_devdata, MTFSF, 0, 0, ctio_buf, &resid);
return(0);
}
ctclose(f)
struct open_file *f;
{
- ctstrategy(f, MTREW);
-}
+ size_t resid;
-char io_buf[MAXBSIZE];
+ ctstrategy(f->f_devdata, MTREW, 0, 0, ctio_buf, &resid);
+}
-ctstrategy(rs, func, dblk, size, v_buf, rsize)
- register struct ct_softc *rs;
+ctstrategy(devdata, func, dblk, size, v_buf, rsize)
+ void *devdata;
int func;
daddr_t dblk;
size_t size;
void *v_buf;
size_t *rsize;
{
+ struct ct_softc *rs = devdata;
char *buf = v_buf;
- register int ctlr = rs->sc_ctlr;
- register int unit = rs->sc_unit;
+ int ctlr = rs->sc_ctlr;
+ int unit = rs->sc_unit;
char stat;
if (size == 0 && (func == F_READ || func == F_WRITE))
return(0);
rs->sc_retry = 0;
+ bzero(&ct_ioc, sizeof(ct_ioc));
ct_ioc.unit = C_SUNIT(rs->sc_punit);
ct_ioc.saddr = C_SADDR;
ct_ioc.nop2 = C_NOP;
ct_ioc.cmd = C_READ;
ct_ioc.addr = rs->sc_blkno;
ct_ioc.len = size = MAXBSIZE;
- buf = io_buf;
}
else {
ct_ioc.cmd = C_READ;
register struct ct_softc *rs = &ct_softc[ctlr][unit];
char stat;
+ bzero(&ct_rsc, sizeof(ct_rsc));
+ bzero(&ct_stat, sizeof(ct_stat));
ct_rsc.unit = C_SUNIT(rs->sc_punit);
ct_rsc.cmd = C_STATUS;
hpibsend(ctlr, unit, C_CMD, &ct_rsc, sizeof(ct_rsc));
-/* $NetBSD: dca.c,v 1.9 1996/02/26 21:51:25 thorpej Exp $ */
+/* $OpenBSD: dca.c,v 1.3 1997/01/17 08:32:42 downsj Exp $ */
+/* $NetBSD: dca.c,v 1.10 1996/10/06 01:42:48 mycroft Exp $ */
/*
* Copyright (c) 1988 University of Utah.
dca->dca_data = DCABRD(9600) & 0xFF;
dca->dca_ier = DCABRD(9600) >> 8;
dca->dca_cfcr = CFCR_8BITS;
+ dca->dca_fifo =
+ FIFO_ENABLE | FIFO_RCV_RST | FIFO_XMT_RST | FIFO_TRIGGER_1;
+ dca->dca_mcr = MCR_DTR | MCR_RTS;
}
/* ARGSUSED */
+/* $OpenBSD: dcm.c,v 1.3 1997/01/17 08:32:43 downsj Exp $ */
/* $NetBSD: dcm.c,v 1.9 1996/02/27 22:11:44 scottr Exp $ */
/*
-/* $NetBSD: devopen.c,v 1.5 1995/08/05 16:47:41 thorpej Exp $ */
+/* $OpenBSD: devopen.c,v 1.2 1997/01/17 08:32:43 downsj Exp $ */
+/* $NetBSD: devopen.c,v 1.7 1996/10/14 07:31:47 thorpej Exp $ */
/*-
+ * Copyright (c) 1996 Jason R. Thorpe. All rights reserved.
* Copyright (c) 1993 John Brezak
* All rights reserved.
*
struct devsw *dp = devsw;
int i;
- for (i = 0; i < ndevs; i++, dp++)
- if (dp->dv_name && strncmp(dp->dv_name, d, len) == 0)
+ for (i = 0; i < ndevs; i++, dp++) {
+ if (dp->dv_name && strncmp(dp->dv_name, d, len) == 0) {
+ /*
+ * Set the filesystem and startup up according to the device
+ * being opened.
+ */
+ switch (i) {
+ case 0: /* ct */
+ bcopy(file_system_rawfs, file_system, sizeof(struct fs_ops));
+ break;
+
+ case 2: /* rd */
+ case 4: /* sd */
+ bcopy(file_system_ufs, file_system, sizeof(struct fs_ops));
+ break;
+
+ case 6: /* le */
+ bcopy(file_system_nfs, file_system, sizeof(struct fs_ops));
+ break;
+
+ default:
+ /* Agh! What happened?! */
+ goto bad;
+ }
return(i);
+ }
+ }
+ bad:
printf("No such device - Configured devices are:\n");
for (dp = devsw, i = 0; i < ndevs; i++, dp++)
if (dp->dv_name)
{
int *argp, i;
char *s, *args[4];
-
+
/* get device name and make lower case */
for (s = (char *)fname; *s && *s != '/' && *s != ':' && *s != '('; s++)
if (isupper(*s)) *s = tolower(*s);
/* second form */
else if (*s == ':') {
- int unit;
+ int temp;
/* isolate device */
for (s = (char *)fname; *s != ':' && !isdigit(*s); s++);
goto baddev;
/* isolate unit */
- if ((unit = atoi(s)) > 255)
+ if ((temp = atoi(s)) > 255)
goto bad;
- *adapt = unit / 8;
- *ctlr = unit % 8;
+ *adapt = temp / 8;
+ *ctlr = temp % 8;
for (; isdigit(*s); s++);
/* translate partition */
ctlr = B_CONTROLLER(bootdev);
unit = B_UNIT(bootdev);
part = B_PARTITION(bootdev);
-
+
if (error = devparse(fname, &dev, &adapt, &ctlr, &unit, &part, file))
return(error);
-
+
+ /*
+ * Set up filesystem type based on what device we're opening.
+ */
+ switch (dev) {
+ case 0: /* ct */
+ bcopy(file_system_rawfs, file_system, sizeof(struct fs_ops));
+ break;
+
+ case 2: /* rd */
+ case 4: /* sd */
+ bcopy(file_system_ufs, file_system, sizeof(struct fs_ops));
+ break;
+
+ case 6: /* le */
+ bcopy(file_system_nfs, file_system, sizeof(struct fs_ops));
+ break;
+
+ default:
+ /* XXX what else should we do here? */
+ printf("WARNING: BOGUS BOOT DEV TYPE 0x%x!\n", dev);
+ return (EIO);
+ }
+
dp = &devsw[dev];
if (!dp->dv_open)
return(ENODEV);
- opendev = MAKEBOOTDEV(dev, adapt, ctlr, unit, part);
-
f->f_dev = dp;
-
- if ((error = (*dp->dv_open)(f, adapt, ctlr, part)) == 0)
- return(0);
-
+
+ if ((error = (*dp->dv_open)(f, adapt, ctlr, part)) == 0) {
+ if ((error =
+ (*punitsw[dev].p_punit)(adapt, ctlr, &unit)) != 0) {
+ goto bad;
+ }
+ opendev = MAKEBOOTDEV(dev, adapt, ctlr, unit, part);
+ return(0);
+ }
+
+ bad:
printf("%s(%d,%d,%d,%d): %s\n", devsw[dev].dv_name,
adapt, ctlr, unit, part, strerror(error));
return(error);
-}
+}
+/* $OpenBSD: fhpib.c,v 1.2 1997/01/17 08:32:44 downsj Exp $ */
/* $NetBSD: fhpib.c,v 1.5 1995/08/05 16:47:42 thorpej Exp $ */
/*
+/* $OpenBSD: hil.c,v 1.2 1997/01/17 08:32:44 downsj Exp $ */
/* $NetBSD: hil.c,v 1.5 1994/10/26 07:27:19 cgd Exp $ */
/*
+/* $OpenBSD: hpib.c,v 1.2 1997/01/17 08:32:45 downsj Exp $ */
/* $NetBSD: hpib.c,v 1.4 1994/10/26 07:27:21 cgd Exp $ */
/*
+/* $OpenBSD: hpibvar.h,v 1.2 1997/01/17 08:32:45 downsj Exp $ */
/* $NetBSD: hpibvar.h,v 1.4 1994/10/26 07:27:24 cgd Exp $ */
/*
+/* $OpenBSD: if_le.c,v 1.5 1997/01/17 08:32:46 downsj Exp $ */
/* $NetBSD: if_le.c,v 1.8 1996/01/01 18:10:54 thorpej Exp $ */
/*
#include <netinet/in.h>
#include <netinet/in_systm.h>
+#include <lib/libsa/stand.h>
#include <lib/libsa/netif.h>
#include <hp300/dev/device.h>
+/* $OpenBSD: if_lereg.h,v 1.2 1997/01/17 08:32:47 downsj Exp $ */
/* $NetBSD: if_lereg.h,v 1.1 1996/01/01 18:10:56 thorpej Exp $ */
/*
#!/bin/sh
+# $OpenBSD: installboot.sh,v 1.2 1997/01/17 08:32:47 downsj Exp $
# $NetBSD: installboot.sh,v 1.2 1994/10/26 07:27:26 cgd Exp $
# compatibility with old installboot program
+/* $OpenBSD: ite.c,v 1.3 1997/01/17 08:32:48 downsj Exp $ */
/* $NetBSD: ite.c,v 1.11 1996/03/03 04:23:33 thorpej Exp $ */
/*
+/* $OpenBSD: ite_dv.c,v 1.3 1997/01/17 08:32:48 downsj Exp $ */
/* $NetBSD: ite_dv.c,v 1.8 1996/03/03 04:23:35 thorpej Exp $ */
/*
+/* $OpenBSD: ite_gb.c,v 1.3 1997/01/17 08:32:49 downsj Exp $ */
/* $NetBSD: ite_gb.c,v 1.8 1996/03/03 04:23:36 thorpej Exp $ */
/*
+/* $OpenBSD: ite_hy.c,v 1.3 1997/01/17 08:32:49 downsj Exp $ */
/* $NetBSD: ite_hy.c,v 1.3 1996/03/03 04:23:37 thorpej Exp $ */
/*
+/* $OpenBSD: ite_rb.c,v 1.3 1997/01/17 08:32:50 downsj Exp $ */
/* $NetBSD: ite_rb.c,v 1.8 1996/03/03 04:23:38 thorpej Exp $ */
/*
+/* $OpenBSD: ite_subr.c,v 1.3 1997/01/17 08:32:51 downsj Exp $ */
/* $NetBSD: ite_subr.c,v 1.8 1996/03/03 04:23:40 thorpej Exp $ */
/*
+/* $OpenBSD: ite_tc.c,v 1.3 1997/01/17 08:32:51 downsj Exp $ */
/* $NetBSD: ite_tc.c,v 1.8 1996/03/03 04:23:41 thorpej Exp $ */
/*
+/* $OpenBSD: itevar.h,v 1.3 1997/01/17 08:32:52 downsj Exp $ */
/* $NetBSD: itevar.h,v 1.1 1996/03/03 04:23:42 thorpej Exp $ */
/*
--- /dev/null
+# $OpenBSD: Makefile,v 1.1 1997/01/17 08:33:05 downsj Exp $
+
+LIB= kern
+
+.PATH: ${.CURDIR}/../../../../lib/libkern
+.PATH: ${.CURDIR}/..
+
+CFLAGS+=${DEBUGFLAGS}
+CFLAGS+=-I${.CURDIR}/..
+CFLAGS+=-I${.CURDIR}/../../../.. -I${.CURDIR}/../../../../lib/libkern
+
+# kern routines
+SRCS= __main.c ashrdi3.c divdi3.c qdivrem.c strlen.c strcat.c strcmp.c \
+ strcpy.c strncmp.c umoddi3.c
+
+NOPROFILE=
+NOPIC=
+
+install:
+
+.include <bsd.lib.mk>
--- /dev/null
+# $OpenBSD: Makefile.inc,v 1.1 1997/01/17 08:33:05 downsj Exp $
+
+# NOTE: $S must correspond to the top of the 'sys' tree
+
+KERN_DIR= $S/arch/hp300/stand/libkern
+
+.if exists($(KERN_DIR)/${__objdir})
+KERN_LIBDIR= $(KERN_DIR)/${__objdir}
+.else
+KERN_LIBDIR= $(KERN_DIR)
+.endif
+
+KERN_LIB= $(KERN_LIBDIR)/libkern.a
+
+$(KERN_LIB): .NOTMAIN __always_make_kern_lib
+ @echo making sure the kernel library is up to date...
+ @(cd $(KERN_DIR) ; make)
+
+clean:: .NOTMAIN __always_make_kern_lib
+ @echo cleaning the kernel library objects
+ @(cd $(KERN_DIR) ; make clean)
+
+__always_make_kern_lib: .NOTMAIN
-# $NetBSD: Makefile,v 1.4 1996/01/30 19:47:32 thorpej Exp $
+# $OpenBSD: Makefile,v 1.3 1997/01/17 08:33:06 downsj Exp $
+# $NetBSD: Makefile,v 1.5 1996/06/26 17:44:42 thorpej Exp $
LIB= sa
.PATH: ${.CURDIR}/../../../../lib/libsa
+.PATH: ${.CURDIR}/..
# Don't need these now...
# DEBUGFLAGS=-DNETIF_DEBUG -DRPC_DEBUG -DNFS_DEBUG -DRARP_DEBUG -DNET_DEBUG
-CFLAGS+=-DSTANDALONE -DCOMPAT_UFS ${DEBUGFLAGS}
+CFLAGS+=-DSTANDALONE -DCOMPAT_UFS -DNO_LSEEK ${DEBUGFLAGS}
+CFLAGS+=-I${.CURDIR}/..
CFLAGS+=-I${.CURDIR}/../../../.. -I${.CURDIR}/../../../../lib/libsa
# stand routines
-SRCS= alloc.c bcopy.c exit.c exec.c getfile.c gets.c globals.c \
- memcpy.c printf.c strerror.c
+SRCS= alloc.c exit.c exec.c getfile.c gets.c globals.c \
+ memcmp.c memcpy.c memset.c printf.c strerror.c
# io routines
SRCS+= close.c closeall.c dev.c disklabel.c dkcksum.c fstat.c ioctl.c lseek.c \
SRCS+= bootp.c bootparam.c rarp.c
# boot filesystems
-SRCS+= ufs.c nfs.c
+SRCS+= ufs.c nfs.c rawfs.o
NOPROFILE=
NOPIC=
-OBJMACHINE=
install:
+# $OpenBSD: Makefile.inc,v 1.2 1997/01/17 08:33:07 downsj Exp $
# $NetBSD: Makefile.inc,v 1.1 1995/08/04 07:55:50 thorpej Exp $
# NOTE: $S must correspond to the top of the 'sys' tree
SA_DIR= $S/arch/hp300/stand/libsa
-.if exists($(SA_DIR)/obj.${MACHINE})
-SA_LIBDIR= $(SA_DIR)/obj.${MACHINE}
+.if exists($(SA_DIR)/${__objdir})
+SA_LIBDIR= $(SA_DIR)/${__objdir}
.else
SA_LIBDIR= $(SA_DIR)
.endif
-/* $NetBSD: machdep.c,v 1.5 1994/10/26 07:27:43 cgd Exp $ */
+/* $OpenBSD: machdep.c,v 1.2 1997/01/17 08:32:52 downsj Exp $ */
+/* $NetBSD: machdep.c,v 1.6 1996/10/14 07:33:46 thorpej Exp $ */
/*
* Copyright (c) 1988 University of Utah.
}
}
#endif
+
+void
+machdep_start(entry, howto, loadaddr, ssym, esym)
+ char *entry;
+ int howto;
+ char *loadaddr;
+ char *ssym, *esym;
+{
+
+ asm("movl %0,d7" : : "m" (howto));
+ asm("movl %0,d6" : : "m" (opendev));
+ asm("movl %0,d5" : : "m" (cons_scode));
+ asm("movl %0,a5" : : "a" (loadaddr));
+ asm("movl %0,a4" : : "a" (esym));
+ (*((int (*)())entry))();
+}
+/* $OpenBSD: mkboot.c,v 1.2 1997/01/17 08:32:53 downsj Exp $ */
+
/*
* Copyright (c) 1990, 1993
* The Regents of the University of California. All rights reserved.
#ifndef lint
#ifdef notdef
static char sccsid[] = "@(#)mkboot.c 7.2 (Berkeley) 12/16/90";
-#endif
static char rcsid[] = "$NetBSD: mkboot.c,v 1.5 1994/10/26 07:27:45 cgd Exp $";
+#endif
+static char rcsid[] = "$OpenBSD: mkboot.c,v 1.2 1997/01/17 08:32:53 downsj Exp $";
#endif /* not lint */
#include <sys/param.h>
+++ /dev/null
-/* $NetBSD: netboot.c,v 1.10 1995/10/04 07:24:32 thorpej Exp $ */
-
-/*-
- * Copyright (c) 1982, 1986, 1990, 1993
- * The Regents of the University of California. 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.
- * 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. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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.
- *
- * @(#)boot.c 8.1 (Berkeley) 6/10/93
- */
-
-#include <sys/param.h>
-#include <sys/reboot.h>
-#include <a.out.h>
-#include "stand.h"
-#include "samachdep.h"
-
-/*
- * Boot program... bits in `howto' determine whether boot stops to
- * ask for system name. Boot device is derived from ROM provided
- * information.
- */
-
-char line[100];
-
-extern u_int opendev;
-extern char *lowram;
-extern int noconsole;
-extern int cons_scode;
-
-char *name;
-char *names[] = {
- "bsd", "obsd", "bsd.old",
-};
-#define NUMNAMES (sizeof(names)/sizeof(char *))
-
-static int bdev, badapt, bctlr, bunit, bpart;
-
-main()
-{
- int currname = 0;
-
- /*
- * XXX: different versions of the HP boot rom seem to report
- * different things, so we have to compensate.
- */
- bootdev = MAKEBOOTDEV(0, 0, 0, 0, 0);
-
- printf("\n>> NetBSD NETWORK BOOT HP9000/%s CPU\n",
- getmachineid());
- printf(">> $NetBSD: netboot.c,v 1.10 1995/10/04 07:24:32 thorpej Exp $\n");
- printf(">> Enter \"reset\" to reset system.\n");
-
- bdev = B_TYPE(bootdev);
- badapt = B_ADAPTOR(bootdev);
- bctlr = B_CONTROLLER(bootdev);
- bunit = B_UNIT(bootdev);
- bpart = B_PARTITION(bootdev);
-
- for (;;) {
- name = names[currname++];
- if (currname == NUMNAMES)
- currname = 0;
-
- if (!noconsole) {
- howto = 0;
- getbootname(&howto);
- } else
- printf(": %s\n", name);
-
- exec(name, lowram, howto);
- printf("boot: %s\n", strerror(errno));
- }
-}
-
-getbootname(howto)
- int *howto;
-{
- char c, *ptr = line;
-
- printf("Boot: [%s][-s][-a][-d] :- ", name);
-
- if (tgets(line)) {
- if (strcmp(line, "reset") == 0) {
- call_req_reboot(); /* reset machine */
- printf("panic: can't reboot, halting\n");
- asm("stop #0x2700");
- }
-
- while (c = *ptr) {
- while (c == ' ')
- c = *++ptr;
- if (!c)
- return;
- if (c == '-')
- while ((c = *++ptr) && c != ' ')
- switch (c) {
- case 'a':
- *howto |= RB_ASKNAME;
- continue;
- case 's':
- *howto |= RB_SINGLE;
- continue;
- case 'd':
- *howto |= RB_KDB;
- continue;
- case 'b':
- *howto |= RB_HALT;
- continue;
- }
- else {
- name = ptr;
- while ((c = *++ptr) && c != ' ');
- if (c)
- *ptr++ = 0;
- }
- }
- } else
- printf("\n");
-}
-
-void
-machdep_start(entry, howto, loadaddr, ssym, esym)
- char *entry;
- int howto;
- char *loadaddr;
- char *ssym, *esym;
-{
-
- asm("movl %0,d7" : : "m" (howto));
- asm("movl #0,d6"); /* tell setroot we've netbooted */
- asm("movl %0,d5" : : "m" (cons_scode));
- asm("movl %0,a5" : : "a" (loadaddr));
- asm("movl %0,a4" : : "a" (esym));
- (*((int (*)())entry))();
-}
-/* $NetBSD: netio.c,v 1.2 1995/09/23 17:31:10 thorpej Exp $ */
+/* $OpenBSD: netio.c,v 1.2 1997/01/17 08:32:54 downsj Exp $ */
+/* $NetBSD: netio.c,v 1.4 1996/10/06 19:07:00 thorpej Exp $ */
/*
- * Copyright (c) 1995 Jason R. Thorpe
+ * Copyright (c) 1995, 1996 Jason R. Thorpe
* Copyright (c) 1995 Gordon W. Ross
* All rights reserved.
*
#include <netinet/in_systm.h>
#include "stand.h"
+#include "samachdep.h"
#include "net.h"
#include "netif.h"
#include "bootparam.h"
int netdev_sock = -1;
static int open_count;
-#ifdef SYS_INST
+int netio_ask = 0; /* default to bootparam, can override */
+
static char input_line[100];
-#endif
/* Why be any different? */
#define SUN_BOOTPARAMS
}
int
-netioctl()
+netstrategy(devdata, func, dblk, size, v_buf, rsize)
+ void *devdata;
+ int func;
+ daddr_t dblk;
+ size_t size;
+ void *v_buf;
+ size_t *rsize;
{
- return EIO;
-}
-int
-netstrategy()
-{
+ *rsize = size;
return EIO;
}
char *devname; /* Device part of file name (or NULL). */
{
int error;
-#ifdef SYS_INST
struct iodesc *d;
-#endif
#ifdef DEBUG
printf("netmountroot: %s\n", devname);
#endif
-#ifdef SYS_INST
+ if (netio_ask) {
get_my_ip:
- printf("My IP address? ");
- bzero(input_line, sizeof(input_line));
- gets(input_line);
- if ((myip.s_addr = inet_addr(input_line)) == htonl(INADDR_NONE)) {
- printf("invalid IP address: %s\n", input_line);
- goto get_my_ip;
- }
+ printf("My IP address? ");
+ bzero(input_line, sizeof(input_line));
+ gets(input_line);
+ if ((myip.s_addr = inet_addr(input_line)) ==
+ htonl(INADDR_NONE)) {
+ printf("invalid IP address: %s\n", input_line);
+ goto get_my_ip;
+ }
get_my_netmask:
- printf("My netmask? ");
- bzero(input_line, sizeof(input_line));
- gets(input_line);
- if ((netmask = inet_addr(input_line)) == htonl(INADDR_NONE)) {
- printf("invalid netmask: %s\n", input_line);
- goto get_my_netmask;
- }
+ printf("My netmask? ");
+ bzero(input_line, sizeof(input_line));
+ gets(input_line);
+ if ((netmask = inet_addr(input_line)) ==
+ htonl(INADDR_NONE)) {
+ printf("invalid netmask: %s\n", input_line);
+ goto get_my_netmask;
+ }
get_my_gateway:
- printf("My gateway? ");
- bzero(input_line, sizeof(input_line));
- gets(input_line);
- if ((gateip.s_addr = inet_addr(input_line)) == htonl(INADDR_NONE)) {
- printf("invalid IP address: %s\n", input_line);
- goto get_my_gateway;
- }
+ printf("My gateway? ");
+ bzero(input_line, sizeof(input_line));
+ gets(input_line);
+ if ((gateip.s_addr = inet_addr(input_line)) ==
+ htonl(INADDR_NONE)) {
+ printf("invalid IP address: %s\n", input_line);
+ goto get_my_gateway;
+ }
get_server_ip:
- printf("Server IP address? ");
- bzero(input_line, sizeof(input_line));
- gets(input_line);
- if ((rootip.s_addr = inet_addr(input_line)) == htonl(INADDR_NONE)) {
- printf("invalid IP address: %s\n", input_line);
- goto get_server_ip;
- }
+ printf("Server IP address? ");
+ bzero(input_line, sizeof(input_line));
+ gets(input_line);
+ if ((rootip.s_addr = inet_addr(input_line)) ==
+ htonl(INADDR_NONE)) {
+ printf("invalid IP address: %s\n", input_line);
+ goto get_server_ip;
+ }
get_server_path:
- printf("Server path? ");
- bzero(rootpath, sizeof(rootpath));
- gets(rootpath);
- if (rootpath[0] == '\0' || rootpath[0] == '\n')
- goto get_server_path;
+ printf("Server path? ");
+ bzero(rootpath, sizeof(rootpath));
+ gets(rootpath);
+ if (rootpath[0] == '\0' || rootpath[0] == '\n')
+ goto get_server_path;
- if ((d = socktodesc(netdev_sock)) == NULL)
- return (EMFILE);
+ if ((d = socktodesc(netdev_sock)) == NULL)
+ return (EMFILE);
- d->myip = myip;
+ d->myip = myip;
+
+ goto do_nfs_mount;
+ }
-#else /* SYS_INST */
/*
* Get info for NFS boot: our IP address, our hostname,
* server IP address, and our root path on the server.
printf("root addr=%s path=%s\n", inet_ntoa(rootip), rootpath);
-#endif /* SYS_INST */
-
+ do_nfs_mount:
/* Get the NFS file handle (mount). */
error = nfs_mount(netdev_sock, rootip, rootpath);
+/* $OpenBSD: nhpib.c,v 1.2 1997/01/17 08:32:55 downsj Exp $ */
/* $NetBSD: nhpib.c,v 1.5 1995/08/05 16:47:46 thorpej Exp $ */
/*
+++ /dev/null
-/* $NetBSD: pboot.c,v 1.10 1995/10/04 07:24:31 thorpej Exp $ */
-
-/*-
- * Copyright (c) 1982, 1986, 1990, 1993
- * The Regents of the University of California. 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.
- * 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. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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.
- *
- * @(#)boot.c 8.1 (Berkeley) 6/10/93
- */
-
-#include <sys/param.h>
-#include <sys/reboot.h>
-#include <a.out.h>
-#include "stand.h"
-#include "samachdep.h"
-
-/*
- * Boot program... bits in `howto' determine whether boot stops to
- * ask for system name. Boot device is derived from ROM provided
- * information.
- */
-
-char line[100];
-
-extern u_int opendev;
-extern char *lowram;
-extern int noconsole;
-extern int cons_scode;
-
-char *name;
-char *names[] = {
- "/bsd", "/obsd", "/bsd.old",
-};
-#define NUMNAMES (sizeof(names)/sizeof(char *))
-
-static int bdev, badapt, bctlr, bunit, bpart;
-
-main()
-{
- int currname = 0;
-
- printf("\n>> NetBSD BOOT HP9000/%s CPU\n",
- getmachineid());
- printf(">> $NetBSD: pboot.c,v 1.10 1995/10/04 07:24:31 thorpej Exp $\n");
- printf(">> Enter \"reset\" to reset system.\n");
-
- bdev = B_TYPE(bootdev);
- badapt = B_ADAPTOR(bootdev);
- bctlr = B_CONTROLLER(bootdev);
- bunit = B_UNIT(bootdev);
- bpart = B_PARTITION(bootdev);
-
- for (;;) {
- name = names[currname++];
- if (currname == NUMNAMES)
- currname = 0;
-
- if (!noconsole) {
- howto = 0;
- getbootdev(&howto);
- } else
- printf(": %s\n", name);
-
-#if 0
- printf("Booting %s%d%c:%s @ 0x%x\n",
- devsw[dev].dv_name, ctlr + (8 * adapt), 'a' + part, name, x.a_entry);
-#endif
-
- exec(name, lowram, howto);
- printf("boot: %s\n", strerror(errno));
- }
-}
-
-getbootdev(howto)
- int *howto;
-{
- char c, *ptr = line;
-
- printf("Boot: [[[%s%d%c:]%s][-s][-a][-d]] :- ",
- devsw[bdev].dv_name, bctlr + (8 * badapt), 'a' + bpart, name);
-
- if (tgets(line)) {
- if (strcmp(line, "reset") == 0) {
- call_req_reboot(); /* reset machine */
- printf("panic: can't reboot, halting\n");
- asm("stop #0x2700");
- }
- while (c = *ptr) {
- while (c == ' ')
- c = *++ptr;
- if (!c)
- return;
- if (c == '-')
- while ((c = *++ptr) && c != ' ')
- switch (c) {
- case 'a':
- *howto |= RB_ASKNAME;
- continue;
- case 's':
- *howto |= RB_SINGLE;
- continue;
- case 'd':
- *howto |= RB_KDB;
- continue;
- case 'b':
- *howto |= RB_HALT;
- continue;
- }
- else {
- name = ptr;
- while ((c = *++ptr) && c != ' ');
- if (c)
- *ptr++ = 0;
- }
- }
- } else
- printf("\n");
-}
-
-void
-machdep_start(entry, howto, loadaddr, ssym, esym)
- char *entry;
- int howto;
- char *loadaddr;
- char *ssym, *esym;
-{
-
- asm("movl %0,d7" : : "m" (howto));
- asm("movl %0,d6" : : "m" (opendev));
- asm("movl %0,d5" : : "m" (cons_scode));
- asm("movl %0,a5" : : "a" (loadaddr));
- asm("movl %0,a4" : : "a" (esym));
- (*((int (*)())entry))();
-}
+/* $OpenBSD: prf.c,v 1.2 1997/01/17 08:32:56 downsj Exp $ */
/* $NetBSD: prf.c,v 1.5 1994/10/26 07:27:50 cgd Exp $ */
/*
-/* $NetBSD: rd.c,v 1.10 1995/09/23 17:19:59 thorpej Exp $ */
+/* $OpenBSD: rd.c,v 1.2 1997/01/17 08:32:56 downsj Exp $ */
+/* $NetBSD: rd.c,v 1.11 1996/12/21 21:34:40 thorpej Exp $ */
/*
* Copyright (c) 1988 University of Utah.
register struct rdminilabel *pi = &rs->sc_pinfo;
register struct disklabel *lp = &rdlabel;
char *msg, *getdisklabel();
- int rdstrategy(), err;
+ int rdstrategy(), err, savepart;
size_t i;
bzero((caddr_t)lp, sizeof *lp);
lp->d_secsize = DEV_BSIZE;
- if (err = rdstrategy(rs, F_READ,
- LABELSECTOR,
- lp->d_secsize ? lp->d_secsize : DEV_BSIZE,
- io_buf, &i) < 0) {
- printf("rdgetinfo: rdstrategy error %d\n", err);
- return(0);
+
+ /* Disklabel is always from RAW_PART. */
+ savepart = rs->sc_part;
+ rs->sc_part = RAW_PART;
+ err = rdstrategy(rs, F_READ, LABELSECTOR,
+ lp->d_secsize ? lp->d_secsize : DEV_BSIZE, io_buf, &i);
+ rs->sc_part = savepart;
+
+ if (err) {
+ printf("rdgetinfo: rdstrategy error %d\n", err);
+ return(0);
}
msg = getdisklabel(io_buf, lp);
if (rdgetinfo(rs) == 0)
return (ERDLAB);
}
- if (part >= rs->sc_pinfo.npart || rs->sc_pinfo.offset[part] == -1)
+ if (part != RAW_PART && /* always allow RAW_PART to be opened */
+ (part >= rs->sc_pinfo.npart || rs->sc_pinfo.offset[part] == -1))
return (EPART);
f->f_devdata = (void *)rs;
return (0);
struct rd_softc *rs = devdata;
register int ctlr = rs->sc_ctlr;
register int unit = rs->sc_unit;
- daddr_t blk = (dblk + rs->sc_pinfo.offset[rs->sc_part]);
+ daddr_t blk;
char stat;
if (size == 0)
return(0);
+ /*
+ * Don't do partition translation on the `raw partition'.
+ */
+ blk = (dblk + ((rs->sc_part == RAW_PART) ? 0 :
+ rs->sc_pinfo.offset[rs->sc_part]));
+
rs->sc_retry = 0;
rd_ioc.c_unit = C_SUNIT(0);
rd_ioc.c_volume = C_SVOL(0);
hpibrecv(ctlr, unit, C_QSTAT, &stat, 1);
if (stat) {
if (rderror(ctlr, unit, rs->sc_part) == 0)
- return(-1);
+ return(EIO);
if (++rs->sc_retry > RDRETRY)
- return(-1);
+ return(EIO);
goto retry;
}
*rsize = size;
+/* $OpenBSD: rominfo.h,v 1.2 1997/01/17 08:32:57 downsj Exp $ */
/* $NetBSD: rominfo.h,v 1.5 1994/10/26 07:27:53 cgd Exp $ */
/*
-/* $NetBSD: samachdep.h,v 1.5 1995/08/05 16:47:50 thorpej Exp $ */
+/* $OpenBSD: samachdep.h,v 1.2 1997/01/17 08:32:58 downsj Exp $ */
+/* $NetBSD: samachdep.h,v 1.7 1996/10/14 07:34:48 thorpej Exp $ */
/*
* Copyright (c) 1982, 1990, 1993
* @(#)samachdep.h 8.1 (Berkeley) 6/10/93
*/
+#include <sys/types.h>
+
#define NHPIB 4
#define NSCSI 2
#define NRD 8
extern int cpuspeed, machineid;
extern int howto;
-extern unsigned int bootdev;
+extern int cons_scode;
+extern u_int opendev;
+extern u_int bootdev;
extern char *getmachineid();
#define DELAY(n) { register int N = cpuspeed * (n); while (--N > 0); }
struct grfinfo {
int grf_foo;
};
+
+/*
+ * Switch we use to set punit in devopen.
+ */
+struct punitsw {
+ int (*p_punit) __P((int, int, int *));
+};
+extern struct punitsw punitsw[];
+extern int npunit;
+
+extern struct devsw devsw_net[];
+extern int ndevs_net;
+
+extern struct devsw devsw_general[];
+extern int ndevs_general;
+
+extern struct fs_ops file_system_rawfs[];
+extern struct fs_ops file_system_ufs[];
+extern struct fs_ops file_system_nfs[];
-/* $NetBSD: scsi.c,v 1.5 1994/10/26 07:27:56 cgd Exp $ */
+/* $OpenBSD: scsi.c,v 1.2 1997/01/17 08:32:58 downsj Exp $ */
+/* $NetBSD: scsi.c,v 1.6 1996/12/17 09:21:42 thorpej Exp $ */
+
+/*
+ * This is reported to fix some odd failures when disklabeling
+ * SCSI disks in SYS_INST.
+ */
+#define SLOWSCSI
/*
* Copyright (c) 1988 University of Utah.
+/* $OpenBSD: scsivar.h,v 1.2 1997/01/17 08:32:59 downsj Exp $ */
/* $NetBSD: scsivar.h,v 1.4 1994/10/26 07:27:58 cgd Exp $ */
/*
-/* $NetBSD: sd.c,v 1.8 1995/09/23 17:19:58 thorpej Exp $ */
+/* $OpenBSD: sd.c,v 1.2 1997/01/17 08:32:59 downsj Exp $ */
+/* $NetBSD: sd.c,v 1.9 1996/12/21 21:34:41 thorpej Exp $ */
/*
* Copyright (c) 1988 University of Utah.
register struct sdminilabel *pi = &ss->sc_pinfo;
register struct disklabel *lp = &sdlabel;
char *msg, *getdisklabel();
- int sdstrategy(), err;
+ int sdstrategy(), err, savepart;
size_t i;
bzero((caddr_t)lp, sizeof *lp);
lp->d_secsize = (DEV_BSIZE << ss->sc_blkshift);
- if (err = sdstrategy(ss, F_READ,
- LABELSECTOR,
- lp->d_secsize ? lp->d_secsize : DEV_BSIZE,
- io_buf, &i) < 0) {
- printf("sdgetinfo: sdstrategy error %d\n", err);
- return(0);
+ /* Disklabel is always from RAW_PART. */
+ savepart = ss->sc_part;
+ ss->sc_part = RAW_PART;
+ err = sdstrategy(ss, F_READ, LABELSECTOR,
+ lp->d_secsize ? lp->d_secsize : DEV_BSIZE, io_buf, &i);
+ ss->sc_part = savepart;
+
+ if (err) {
+ printf("sdgetinfo: sdstrategy error %d\n", err);
+ return(0);
}
msg = getdisklabel(io_buf, lp);
if (sdgetinfo(ss) == 0)
return (ERDLAB);
}
- if (part >= ss->sc_pinfo.npart || ss->sc_pinfo.offset[part] == -1)
+ if (part != RAW_PART && /* always allow RAW_PART to be opened */
+ (part >= ss->sc_pinfo.npart || ss->sc_pinfo.offset[part] == -1))
return (EPART);
f->f_devdata = (void *)ss;
return (0);
char *buf = v_buf;
register int ctlr = ss->sc_ctlr;
register int unit = ss->sc_unit;
- daddr_t blk = (dblk + ss->sc_pinfo.offset[ss->sc_part])>> ss->sc_blkshift;
u_int nblk = size >> ss->sc_blkshift;
+ daddr_t blk;
char stat;
if (size == 0)
return(0);
+ /*
+ * Don't do partition translation on the `raw partition'.
+ */
+ blk = (dblk + ((ss->sc_part == RAW_PART) ? 0 :
+ ss->sc_pinfo.offset[ss->sc_part])) >> ss->sc_blkshift;
+
ss->sc_retry = 0;
#ifdef SD_DEBUG
+/* $OpenBSD: srt0.s,v 1.2 1997/01/17 08:33:00 downsj Exp $ */
/* $NetBSD: srt0.s,v 1.3 1995/09/02 05:04:23 thorpej Exp $ */
/*
+++ /dev/null
-/* $NetBSD: sys_inst.c,v 1.3 1995/10/04 07:24:33 thorpej Exp $ */
-
-/*
- * Copyright (c) 1995 Jason R. Thorpe.
- * 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.
- * 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. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed for the NetBSD Project
- * by Jason R. Thorpe.
- * 4. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * Portions of this program are inspired by (and have borrowed code from)
- * the `editlabel' program that accompanies NetBSD/vax, which carries
- * the following notice:
- *
- * Copyright (c) 1995 Ludd, University of Lule}, Sweden.
- * 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.
- * 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. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed at Ludd, University of
- * Lule}, Sweden and its contributors.
- * 4. 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.
- */
-
-#define DKTYPENAMES
-
-#include <sys/param.h>
-#include <sys/reboot.h>
-#include <sys/disklabel.h>
-#include <a.out.h>
-#include "stand.h"
-#include "samachdep.h"
-
-char line[100];
-
-extern u_int opendev;
-extern char *lowram;
-extern int noconsole;
-extern int cons_scode;
-
-char *kernel_name = "/bsd";
-
-void dsklabel __P((void));
-void miniroot __P((void));
-void bootmini __P((void));
-void resetsys __P((void));
-void gethelp __P((void));
-int opendisk __P((char *, char *, int, char, int *));
-void disklabel_edit __P((struct disklabel *));
-void disklabel_show __P((struct disklabel *));
-int disklabel_write __P((char *, int, struct open_file *));
-
-struct inst_command {
- char *ic_cmd; /* command name */
- char *ic_desc; /* command description */
- void (*ic_func) __P((void)); /* handling function */
-} inst_commands[] = {
- { "disklabel", "place partition map on disk", dsklabel },
- { "miniroot", "place miniroot on disk", miniroot },
- { "boot", "boot from miniroot", bootmini },
- { "reset", "reset the system", resetsys },
- { "help", "display command list", gethelp },
-};
-#define NCMDS (sizeof(inst_commands) / sizeof(inst_commands[0]))
-
-main()
-{
- int i, currname = 0;
-
- printf("\n>> NetBSD INSTALLATION HP9000/%s CPU\n",
- getmachineid());
- printf(">> $NetBSD: sys_inst.c,v 1.3 1995/10/04 07:24:33 thorpej Exp $\n");
- gethelp();
-
- for (;;) {
- printf("sys_inst> ");
- bzero(line, sizeof(line));
- gets(line);
- if (line[0] == '\n' || line[0] == '\0')
- continue;
-
- for (i = 0; i < NCMDS; ++i)
- if (strcmp(line, inst_commands[i].ic_cmd) == 0) {
- (*inst_commands[i].ic_func)();
- break;
- }
-
-
- if (i == NCMDS)
- printf("unknown command: %s\n", line);
- }
-}
-
-void
-gethelp()
-{
- int i;
-
- printf(">> Available commands:\n");
- for (i = 0; i < NCMDS; ++i)
- printf(">> %s - %s\n", inst_commands[i].ic_cmd,
- inst_commands[i].ic_desc);
-}
-
-/*
- * Do all the steps necessary to place a disklabel on a disk.
- * Note, this assumes 512 byte sectors.
- */
-void
-dsklabel()
-{
- struct disklabel *lp;
- struct open_file *disk_ofp;
- int dfd, error;
- size_t xfersize;
- char block[DEV_BSIZE], diskname[64];
- extern struct open_file files[];
-
- printf("
-You will be asked several questions about your disk, most of which
-require prior knowledge of the disk's geometry. There is no easy way
-for the system to provide this information for you. If you do not have
-this information, please consult your disk's manual or another
-informative source.\n\n");
-
- /* Error message printed by opendisk() */
- if (opendisk("Disk to label?", diskname, sizeof(diskname),
- ('a' + RAW_PART), &dfd))
- return;
-
- disk_ofp = &files[dfd];
-
- bzero(block, sizeof(block));
- if (error = (*disk_ofp->f_dev->dv_strategy)(disk_ofp->f_devdata,
- F_READ, LABELSECTOR, sizeof(block), block, &xfersize)) {
- printf("cannot read disk %s, errno = %d\n", diskname, error);
- return;
- }
-
- printf("Sucessfully read %d bytes from %s\n", xfersize, diskname);
-
- lp = (struct disklabel *)((void *)(&block[LABELOFFSET]));
-
- disklabel_loop:
- bzero(line, sizeof(line));
- printf("(z)ap, (e)dit, (s)how, (w)rite, (d)one > ");
- gets(line);
- if (line[0] == '\n' || line[0] == '\0')
- goto disklabel_loop;
-
- switch (line[0]) {
- case 'z':
- case 'Z': {
- char zap[DEV_BSIZE];
- bzero(zap, sizeof(zap));
- (void)(*disk_ofp->f_dev->dv_strategy)(disk_ofp->f_devdata,
- F_WRITE, LABELSECTOR, sizeof(zap), zap, &xfersize);
- }
- goto out;
- /* NOTREACHED */
-
- case 'e':
- case 'E':
- disklabel_edit(lp);
- break;
-
- case 's':
- case 'S':
- disklabel_show(lp);
- break;
-
- case 'w':
- case 'W':
- /*
- * Error message will be displayed by disklabel_write()
- */
- if (disklabel_write(block, sizeof(block), disk_ofp))
- goto out;
- else
- printf("Sucessfully wrote label to %s\n", diskname);
- break;
-
- case 'd':
- case 'D':
- goto out;
- /* NOTREACHED */
-
- default:
- printf("unkown command: %s\n", line);
- }
-
- goto disklabel_loop;
- /* NOTREACHED */
-
- out:
- /*
- * Close disk. Marks disk `not alive' so that partition
- * information will be reloaded upon next open.
- */
- (void)close(dfd);
-}
-
-#define GETNUM(out, num) \
- printf((out), (num)); \
- bzero(line, sizeof(line)); \
- gets(line); \
- if (line[0]) \
- (num) = atoi(line);
-
-#define GETNUM2(out, num1, num2) \
- printf((out), (num1), (num2)); \
- bzero(line, sizeof(line)); \
- gets(line); \
- if (line[0]) \
- (num2) = atoi(line);
-
-#define GETSTR(out, str) \
- printf((out), (str)); \
- bzero(line, sizeof(line)); \
- gets(line); \
- if (line[0]) \
- strcpy((str), line);
-
-#define FLAGS(out, flag) \
- printf((out), lp->d_flags & (flag) ? 'y' : 'n'); \
- bzero(line, sizeof(line)); \
- gets(line); \
- if (line[0] == 'y' || line[0] == 'Y') \
- lp->d_flags |= (flag); \
- else \
- lp->d_flags &= ~(flag);
-
-void
-disklabel_edit(lp)
- struct disklabel *lp;
-{
- int i;
-
- printf("Select disk type. Valid types:\n");
- for (i = 0; i < DKMAXTYPES; i++)
- printf("%d %s\n", i, dktypenames[i]);
- printf("\n");
-
- GETNUM("Disk type (number)? [%d] ", lp->d_type);
- GETSTR("Disk model name? [%s] ", lp->d_typename);
- GETSTR("Disk pack name? [%s] ", lp->d_packname);
- FLAGS("Bad sectoring? [%c] ", D_BADSECT);
- FLAGS("Ecc? [%c] ", D_ECC);
- FLAGS("Removable? [%c] ", D_REMOVABLE);
-
- printf("\n");
-
- GETNUM("Interleave? [%d] ", lp->d_interleave);
- GETNUM("Rpm? [%d] ", lp->d_rpm);
- GETNUM("Trackskew? [%d] ", lp->d_trackskew);
- GETNUM("Cylinderskew? [%d] ", lp->d_cylskew);
- GETNUM("Headswitch? [%d] ", lp->d_headswitch);
- GETNUM("Track-to-track? [%d] ", lp->d_trkseek);
- GETNUM("Drivedata 0? [%d] ", lp->d_drivedata[0]);
- GETNUM("Drivedata 1? [%d] ", lp->d_drivedata[1]);
- GETNUM("Drivedata 2? [%d] ", lp->d_drivedata[2]);
- GETNUM("Drivedata 3? [%d] ", lp->d_drivedata[3]);
- GETNUM("Drivedata 4? [%d] ", lp->d_drivedata[4]);
-
- printf("\n");
-
- GETNUM("Bytes/sector? [%d] ", lp->d_secsize);
- GETNUM("Sectors/track? [%d] ", lp->d_nsectors);
- GETNUM("Tracks/cylinder? [%d] ", lp->d_ntracks);
- GETNUM("Sectors/cylinder? [%d] ", lp->d_secpercyl);
- GETNUM("Cylinders? [%d] ", lp->d_ncylinders);
-
- printf("
-Enter partition table. Note, sizes and offsets are in sectors.\n\n");
-
- lp->d_npartitions = MAXPARTITIONS;
- for (i = 0; i < lp->d_npartitions; ++i) {
- GETNUM2("%c partition: offset? [%d] ", ('a' + i),
- lp->d_partitions[i].p_offset);
- GETNUM(" size? [%d] ", lp->d_partitions[i].p_size);
- }
-
- /* Perform magic. */
- lp->d_magic = lp->d_magic2 = DISKMAGIC;
-
- /* Calculate disklabel checksum. */
- lp->d_checksum = 0;
- lp->d_checksum = dkcksum(lp);
-}
-
-void
-disklabel_show(lp)
- struct disklabel *lp;
-{
- int i, npart;
- struct partition *pp;
-
- /*
- * Check for valid disklabel.
- */
- if (lp->d_magic != DISKMAGIC || lp->d_magic2 != DISKMAGIC) {
- printf("No disklabel to show.\n");
- return;
- }
-
- if (lp->d_npartitions > MAXPARTITIONS || dkcksum(lp) != 0) {
- printf("Corrupted disklabel.\n");
- return;
- }
-
- printf("\ndisk type %d (%s), %s: %s%s%s\n", lp->d_type,
- lp->d_type < DKMAXTYPES ? dktypenames[lp->d_type] :
- dktypenames[0], lp->d_typename,
- (lp->d_flags & D_REMOVABLE) ? " removable" : "",
- (lp->d_flags & D_ECC) ? " ecc" : "",
- (lp->d_flags & D_BADSECT) ? " badsect" : "");
-
- printf("interleave %d, rpm %d, trackskew %d, cylinderskew %d\n",
- lp->d_interleave, lp->d_rpm, lp->d_trackskew, lp->d_cylskew);
-
- printf("headswitch %d, track-to-track %d, drivedata: %d %d %d %d %d\n",
- lp->d_headswitch, lp->d_trkseek, lp->d_drivedata[0],
- lp->d_drivedata[1], lp->d_drivedata[2], lp->d_drivedata[3],
- lp->d_drivedata[4]);
-
- printf("\nbytes/sector: %d\n", lp->d_secsize);
- printf("sectors/track: %d\n", lp->d_nsectors);
- printf("tracks/cylinder: %d\n", lp->d_ntracks);
- printf("sectors/cylinder: %d\n", lp->d_secpercyl);
- printf("cylinders: %d\n", lp->d_ncylinders);
-
- printf("\n%d partitions:\n", lp->d_npartitions);
- printf(" size offset\n");
- pp = lp->d_partitions;
- for (i = 0; i < lp->d_npartitions; i++) {
- printf("%c: %d, %d\n", 97 + i, lp->d_partitions[i].p_size,
- lp->d_partitions[i].p_offset);
- }
- printf("\n");
-}
-
-int
-disklabel_write(block, len, ofp)
- char *block;
- int len;
- struct open_file *ofp;
-{
- int error = 0;
- size_t xfersize;
-
- if (error = (*ofp->f_dev->dv_strategy)(ofp->f_devdata, F_WRITE,
- LABELSECTOR, len, block, &xfersize))
- printf("cannot write disklabel, errno = %d\n", error);
-
- return (error);
-}
-
-int
-opendisk(question, diskname, len, partition, fdp)
- char *question, *diskname;
- int len;
- char partition;
- int *fdp;
-{
- char fulldiskname[64], *filename;
- int i, error = 0;
-
- getdiskname:
- printf("%s ", question);
- bzero(diskname, len);
- bzero(fulldiskname, sizeof(fulldiskname));
- gets(diskname);
- if (diskname[0] == '\n' || diskname[0] == '\0')
- goto getdiskname;
-
- /*
- * devopen() is picky. Make sure it gets the sort of string it
- * wants.
- */
- bcopy(diskname, fulldiskname,
- len < sizeof(fulldiskname) ? len : sizeof(fulldiskname));
- for (i = 0; fulldiskname[i + 1] != '\0'; ++i)
- /* Nothing. */ ;
- if (fulldiskname[i] < '0' || fulldiskname[i] > '9') {
- printf("invalid disk name %s\n", diskname);
- goto getdiskname;
- }
- fulldiskname[++i] = partition; fulldiskname[++i] = ':';
-
- /*
- * We always open for writing.
- */
- if ((*fdp = open(fulldiskname, 1)) < 0)
- printf("cannot open %s\n", diskname);
-
- return (errno);
-}
-
-/*
- * Copy a miniroot image from an NFS server or tape to the `b' partition
- * of the specified disk. Note, this assumes 512 byte sectors.
- */
-void
-miniroot()
-{
- int sfd, dfd, i, nblks;
- char diskname[64], minirootname[128];
- char block[DEV_BSIZE];
- struct stat st;
- size_t xfersize;
- struct open_file *disk_ofp;
- extern struct open_file files[];
-
- /* Error message printed by opendisk() */
- if (opendisk("Disk for miniroot?", diskname, sizeof(diskname),
- 'b', &dfd))
- return;
-
- disk_ofp = &files[dfd];
-
- /*
- * XXX We only support NFS for now.
- */
- getsource:
- printf("Source? (N)FS, (t)ape, (d)one > ");
- bzero(line, sizeof(line));
- gets(line);
- if (line[0] == '\0')
- goto getsource;
-
- switch (line[0]) {
- case 'n':
- case 'N':
- name_of_miniroot:
- printf("Name of miniroot file? ");
- bzero(line, sizeof(line));
- bzero(minirootname, sizeof(minirootname));
- gets(line);
- if (line[0] == '\0')
- goto name_of_miniroot;
- (void)strcat(minirootname, "le0a:");
- (void)strcat(minirootname, line);
- if ((sfd = open(minirootname, 0)) < 0) {
- printf("can't open %s\n", line);
- return;
- }
- break;
-
- case 't':
- case 'T':
- printf("Sorry, no tape support yet.\n");
- return;
-
- case 'd':
- case 'D':
- return;
-
- default:
- printf("Unknown source: %s\n", line);
- goto getsource;
- }
-
- /*
- * Have file descriptor, will copy.
- */
- if (fstat(sfd, &st) < 0) {
- printf("can't stat %s\n", line);
- goto done;
- }
-
- nblks = (int)(st.st_size / sizeof(block));
- printf("Copying %d blocks from %s to %s\n", nblks, line, diskname);
-
- for (i = 0; i < nblks; ++i) {
- if (read(sfd, block, sizeof(block)) != sizeof(block)) {
- printf("Short read, errno = %d\n", errno);
- goto done;
- }
- if ((*disk_ofp->f_dev->dv_strategy)(disk_ofp->f_devdata,
- F_WRITE, i, sizeof(block), block, &xfersize) ||
- xfersize != sizeof(block)) {
- printf("Bad write, errno = %d\n", errno);
- goto done;
- }
- }
-
- printf("Successfully copied miniroot image.\n");
- done:
- close(sfd);
- close(dfd);
-}
-
-/*
- * Boot the kernel from the miniroot image into single-user.
- */
-void
-bootmini()
-{
- char diskname[64], bootname[64];
- int i;
-
- getdiskname:
- printf("Disk to boot from? ");
- bzero(diskname, sizeof(diskname));
- bzero(bootname, sizeof(bootname));
- gets(diskname);
- if (diskname[0] == '\n' || diskname[0] == '\0')
- goto getdiskname;
-
- /*
- * devopen() is picky. Make sure it gets the sort of string it
- * wants.
- */
- (void)strcat(bootname, diskname);
- for (i = 0; bootname[i + 1] != '\0'; ++i)
- /* Nothing. */ ;
- if (bootname[i] < '0' || bootname[i] > '9') {
- printf("invalid disk name %s\n", diskname);
- goto getdiskname;
- }
- bootname[++i] = 'b'; bootname[++i] = ':';
- (void)strcat(bootname, kernel_name);
-
- howto = RB_SINGLE; /* _Always_ */
-
- printf("booting: %s -s\n", bootname);
- exec(bootname, lowram, howto);
- printf("boot: %s\n", strerror(errno));
-}
-
-/*
- * Reset the system.
- */
-void
-resetsys()
-{
-
- call_req_reboot();
- printf("panic: can't reboot, halting\n");
- asm("stop #0x2700");
-}
-
-void
-machdep_start(entry, howto, loadaddr, ssym, esym)
- char *entry;
- int howto;
- char *loadaddr;
- char *ssym, *esym;
-{
-
- asm("movl %0,d7" : : "m" (howto));
- asm("movl %0,d6" : : "m" (opendev));
- asm("movl %0,d5" : : "m" (cons_scode));
- asm("movl %0,a5" : : "a" (loadaddr));
- asm("movl %0,a4" : : "a" (esym));
- (*((int (*)())entry))();
-}
+/* $OpenBSD: tgets.c,v 1.2 1997/01/17 08:33:01 downsj Exp $ */
/* $NetBSD: tgets.c,v 1.4 1994/10/26 07:28:05 cgd Exp $ */
/*-
+/* $OpenBSD: volhdr.h,v 1.2 1997/01/17 08:33:02 downsj Exp $ */
/* $NetBSD: volhdr.h,v 1.4 1994/10/26 07:28:08 cgd Exp $ */
/*