diff options
Diffstat (limited to 'sys/arch/alpha/stand/bootxx')
20 files changed, 31 insertions, 2383 deletions
diff --git a/sys/arch/alpha/stand/bootxx/Makefile b/sys/arch/alpha/stand/bootxx/Makefile index 75f5f9f8caa..937657352f7 100644 --- a/sys/arch/alpha/stand/bootxx/Makefile +++ b/sys/arch/alpha/stand/bootxx/Makefile @@ -1,67 +1,44 @@ -# $NetBSD: Makefile,v 1.3 1995/02/27 16:36:55 cgd Exp $ -# -# BSD Boot blocks for the Alpha -# -# XXX should generate a primary boot block, too... +# $NetBSD: Makefile,v 1.4 1995/11/23 02:40:29 cgd Exp $ -#INCPATH=-I../../.. -I. -INCPATH=-I/sys -I. -I/sys/arch/alpha/stand +.PATH: ${.CURDIR}/.. ${.CURDIR}/../../../../lib/libsa -# Boot relocation address -RELOC1= 20000000 -# Low memory test program relocation address -#RELOC2= 20004000 -# High memory test program relocation address -RELOC2= fffffc0000230000 +BOOT_PROG = bootxx +BOOT_RELOC = ${PRIMARY_LOAD_ADDRESS} -# Compiler and assembler flags used to generate boot blocks. -# -DEFS= -DSMALL -DSTANDALONE -AFLAGS+=-DASSEMBLER ${INCPATH} -#CFLAGS= -O6 -mno-fp-regs ${INCPATH} ${DEFS} -CFLAGS= -mno-fp-regs ${INCPATH} ${DEFS} -finline-functions -O6 +BOOT_SRCS = start.S bootxx.c prom.c prom_disp.S bzero.c puts.c +BOOT_OBJS = ${BOOT_SRCS:N*.h:R:S/$/.o/g} -LIBS= libsa/libsa.a -lc -SRCS= boot.c conf.c prom.c test.c +HEADERSIZE_PROG = headersize -all: bootxx +AFLAGS += -DASSEMBLER +CPPFLAGS += -I${.CURDIR}/../.. -DPRIMARY_BOOTBLOCK +CFLAGS = -Werror -mno-fp-regs -g -libsa/libsa.a:: - cd libsa; make +.PATH: ${.CURDIR}/../../../../lib/libkern -# This boot is supposed to be installed in this way: -# cp boot <true_root_of_disk>/boot -BOBJS= boot.o prom.o prom_disp.o -bootxx.coff: start.o ${BOBJS} ${LIBS} - ${LD} -Ttext ${RELOC1} -N \ - -e start -o ${.TARGET} start.o ${BOBJS} ${LIBS} +all: ${BOOT_PROG} -bootxx: headersize bootxx.coff - dd if=bootxx.coff of=bootxx.nohdr bs=`./headersize <bootxx.coff` skip=1 - dd if=bootxx.nohdr of=bootxx count=15 - -# This boot is supposed to be installed in this way: -# cp test_boot <true_root_of_disk>/test_boot -# -# It is used presumably in this way: -# boot -fi "test_boot" dka300 -TOBJS= prom.o prom_disp.o prom_swpal.o test.o -test_boot: start.o ${TOBJS} ${LIBS} - ${LD} -T ${RELOC2} -N -e start -o ${.TARGET} start.o ${TOBJS} ${LIBS} - -clean cleandir: - rm -f .depend *.o *.exe *.i errs make.out core* vers.c - rm -f a.out boot test_boot bootxx bootxx.nohdr bootxx.coff headersize - cd libsa && make cleandir +${BOOT_PROG}: ${BOOT_OBJS} ${HEADERSIZE_PROG} + ${LD} -Ttext ${BOOT_RELOC} -N -e start -o ${BOOT_PROG}.coff \ + ${BOOT_OBJS} + size ${BOOT_PROG}.coff + strip ${BOOT_PROG}.coff + dd if=${BOOT_PROG}.coff of=${BOOT_PROG}.nohdr \ + bs=`./${HEADERSIZE_PROG} < ${BOOT_PROG}.coff` skip=1 + dd if=${BOOT_PROG}.nohdr of=${BOOT_PROG} bs=`expr 15 \* 512` conv=sync install: - install -c -o bin -g bin -m 444 bootxx ${DESTDIR}/usr/mdec/bootsd + install -c -o bin -g bin -m 444 ${BOOT_PROG} \ + ${DESTDIR}${BINDIR}/${BOOT_PROG} -depend: ${SRCS} - mkdep -p ${INCPATH} ${DEFS} ${SRCS} - cd libsa && make depend +clean: _SUBDIRUSE + rm -f a.out [Ee]rrs mklog core *.core \ + ${BOOT_PROG} ${BOOT_OBJS} ${CLEANFILES} \ + ${BOOT_PROG}.coff ${BOOT_PROG}.nohdr ${HEADERSIZE_PROG} -newvers: - sh newvers.sh +cleandir: _SUBDIRUSE clean -vers.c: newvers +.include "${.CURDIR}/../Makefile.inc" +.include <bsd.obj.mk> +.include <bsd.dep.mk> +.include <bsd.subdir.mk> diff --git a/sys/arch/alpha/stand/bootxx/TODO b/sys/arch/alpha/stand/bootxx/TODO deleted file mode 100644 index 34e314a9616..00000000000 --- a/sys/arch/alpha/stand/bootxx/TODO +++ /dev/null @@ -1,7 +0,0 @@ -$NetBSD: TODO,v 1.2 1995/02/16 02:33:07 cgd Exp $ - -libsa/devopen.c should replace the PMAX source code, and -they should then share it. - -Standalone programs should load against libkern, and sys/stand -should lose things like strchr() in favor of the libkern versions. diff --git a/sys/arch/alpha/stand/bootxx/boot.c b/sys/arch/alpha/stand/bootxx/boot.c deleted file mode 100644 index 0d9cda391f6..00000000000 --- a/sys/arch/alpha/stand/bootxx/boot.c +++ /dev/null @@ -1,186 +0,0 @@ -/* $NetBSD: boot.c,v 1.3 1995/06/28 00:58:58 cgd Exp $ */ - -/* - * Copyright (c) 1992, 1993 - * The Regents of the University of California. All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * Ralph Campbell. - * - * 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 "stand.h" - -#include <sys/param.h> -#include <sys/exec.h> - -#include <machine/prom.h> - -#include "../include/coff.h" -#define KERNEL -#include "../include/pte.h" - -#include "libsa/open.c" - -#if 0 -static void aout_exec __P((int, struct exec *)); -#endif -static void coff_exec __P((int, struct exechdr *)); -static void loadfile __P((char *)); - -#if 0 -static inline int -aout_exec(fd, aout, entryp) - int fd; - struct exec *aout; - u_int64_t *entryp; -{ - size_t sz; - - /* Check the magic number. */ - if (N_GETMAGIC(*aout) != OMAGIC) - return (1); - - /* Read in text, data. */ - if (lseek(fd, (off_t)N_TXTOFF(*aout), SEEK_SET) < 0) - return (1); - sz = aout->a_text + aout->a_data; - if (read(fd, aout->a_entry, sz) != sz) - return (1); - - /* Zero out bss. */ - if (aout->a_bss != 0) - bzero(aout->a_entry + sz, aout->a_bss); - - ffp_save = aout->a_entry + aout->a_text + aout->a_data + aout->a_bss; - ffp_save = k0segtophys((ffp_save + PGOFSET & ~PGOFSET)) >> PGSHIFT; - ffp_save += 2; /* XXX OSF/1 does this, no idea why. */ - - *entryp = aout->a_entry; - return (0); -} -#endif - -static inline void -coff_exec(fd, coff) - int fd; - struct exechdr *coff; -{ - - /* Read in text. */ - (void)lseek(fd, N_COFFTXTOFF(coff->f, coff->a), 0); - if (read(fd, coff->a.text_start, coff->a.tsize) != coff->a.tsize) { -/*puts("text read failed\n");*/ - return; - } - - /* Read in data. */ - if (coff->a.dsize != 0) { - if (read(fd, - coff->a.data_start, coff->a.dsize) != coff->a.dsize) { -/*puts("data read failed\n");*/ - return; - } - } - - /* Zero out bss. */ - if (coff->a.bsize != 0) - bzero(coff->a.bss_start, coff->a.bsize); - -#if 0 - ffp_save = coff->a.text_start + coff->a.tsize; - if (ffp_save < coff->a.data_start + coff->a.dsize) - ffp_save = coff->a.data_start + coff->a.dsize; - if (ffp_save < coff->a.bss_start + coff->a.bsize) - ffp_save = coff->a.bss_start + coff->a.bsize; - ffp_save = k0segtophys((ffp_save + PGOFSET & ~PGOFSET)) >> PGSHIFT; - ffp_save += 2; /* XXX OSF/1 does this, no idea why. */ -#endif - - { - extern int diskdev; - prom_close(diskdev); - } - (*(void (*)())coff->a.entry)(); -} - -/* - * Open 'filename', read in program and return the entry point or -1 if error. - */ -static inline void -loadfile(fname) - char *fname; -{ - struct devices *dp; - union { - struct exec aout; - struct exechdr coff; - } hdr; - ssize_t nr; - int fd, rval; - - /* Open the file. */ - /* rval = 1; */ - if ((fd = open(fname, 0)) < 0) { -/*puts("open failed\n");*/ - return; - } - - /* Read the exec header. */ - if ((nr = read(fd, &hdr, sizeof(hdr))) != sizeof(hdr)) { -/*puts("header read failed\n");*/ - return; - } - -#if 0 - /* Exec a.out or COFF. */ - rval = N_COFFBADMAG(hdr.coff.a) ? - aout_exec(fd, &hdr.aout, entryp) : - coff_exec(fd, &hdr.coff, entryp); -#endif - coff_exec(fd, &hdr.coff); -/*puts("coff_exec returned\n");*/ -} - -void -main() -{ - - /* Init prom callback vector. */ - init_prom_calls(); - - /* print a banner */ -/* puts("loading /boot...\n");*/ - - loadfile("/boot"); -/* puts("couln't load /boot.\n");*/ -} diff --git a/sys/arch/alpha/stand/bootxx/disk.c b/sys/arch/alpha/stand/bootxx/disk.c deleted file mode 100644 index a7ab02f742b..00000000000 --- a/sys/arch/alpha/stand/bootxx/disk.c +++ /dev/null @@ -1,152 +0,0 @@ -/* $NetBSD: disk.c,v 1.3 1995/06/28 00:59:02 cgd Exp $ */ - -/* - * Copyright (c) 1992, 1993 - * The Regents of the University of California. All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * Van Jacobson of Lawrence Berkeley Laboratory and Ralph Campbell. - * - * 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. - * - * @(#)rz.c 8.1 (Berkeley) 6/10/93 - */ - - -#if 0 -/*#include "stand.h"*/ -#include <sys/param.h> -#include <machine/prom.h> -#endif -#include <sys/disklabel.h> - -#include "libsa/disklabel.c" - -struct disk_softc { - int sc_fd; /* PROM channel number */ - int sc_ctlr; /* controller number */ - int sc_unit; /* disk unit number */ - int sc_part; /* disk partition number */ - struct disklabel sc_label; /* disk label for this disk */ -}; - -int -diskstrategy(devdata, rw, bn, reqcnt, addr, cnt) - void *devdata; - int rw; - daddr_t bn; - u_int reqcnt; - char *addr; - u_int *cnt; /* out: number of bytes transfered */ -{ - struct disk_softc *sc; - struct partition *pp; - prom_return_t ret; - int s; - - /* Partial-block transfers not handled. */ - if (reqcnt & (DEV_BSIZE - 1)) { - *cnt = 0; - return (EINVAL); - } - - sc = (struct disk_softc *)devdata; - pp = &sc->sc_label.d_partitions[sc->sc_part]; - - ret.bits = prom_read(sc->sc_fd, reqcnt, addr, bn + pp->p_offset); - if (ret.u.status) - return (EIO); - *cnt = ret.u.retval; - return (0); -} - -int diskdev; - -static inline int -diskopen(f, ctlr, unit, part) - struct open_file *f; - int ctlr, unit, part; -{ - struct disklabel *lp; - prom_return_t ret; - int cnt, devlen, i; - char *msg, buf[DEV_BSIZE], devname[32]; - struct disk_softc *sc; - -#if 0 - if (unit >= 8 || part >= 8) - return (ENXIO); -#endif - - /* - * XXX - * We don't know what device names look like yet, - * so we can't change them. - */ - ret.bits = prom_getenv(PROM_E_BOOTED_DEV, devname, sizeof(devname)); - devlen = ret.u.retval; - - ret.bits = prom_open(devname, devlen); - if (ret.u.status) - return (EIO); - - sc = alloc(sizeof(struct disk_softc)); - f->f_devdata = (void *)sc; - - diskdev = sc->sc_fd = ret.u.retval; -#if 0 - sc->sc_ctlr = ctlr; - sc->sc_unit = unit; - sc->sc_part = part; -#endif - - /* Try to read disk label and partition table information. */ - lp = &sc->sc_label; - lp->d_secsize = DEV_BSIZE; - lp->d_secpercyl = 1; - lp->d_npartitions = MAXPARTITIONS; - lp->d_partitions[part].p_offset = 0; - lp->d_partitions[part].p_size = 0x7fffffff; - i = diskstrategy(sc, F_READ, - (daddr_t)LABELSECTOR, DEV_BSIZE, buf, &cnt); - if (i || cnt != DEV_BSIZE) { - goto bad; - } else { - msg = getdisklabel(buf, lp); - if (msg) { - goto bad; - } - } - - if (part >= lp->d_npartitions || lp->d_partitions[part].p_size == 0) { -bad: free(sc, sizeof(struct disk_softc)); - return (ENXIO); - } - return (0); -} diff --git a/sys/arch/alpha/stand/bootxx/headersize.c b/sys/arch/alpha/stand/bootxx/headersize.c deleted file mode 100644 index 11f8a963678..00000000000 --- a/sys/arch/alpha/stand/bootxx/headersize.c +++ /dev/null @@ -1,47 +0,0 @@ -/* $NetBSD: headersize.c,v 1.2 1995/02/16 02:33:10 cgd Exp $ */ - -/* - * Copyright (c) 1995 Carnegie-Mellon University. - * All rights reserved. - * - * Author: Chris G. Demetriou - * - * Permission to use, copy, modify and distribute this software and - * its documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND - * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie the - * rights to redistribute these changes. - */ - -#include <sys/types.h> -#include <sys/exec.h> -#include <machine/coff.h> - -#define HDR_BUFSIZE 8192 - -main() -{ - char buf[HDR_BUFSIZE]; - - if (read(0, &buf, HDR_BUFSIZE) < HDR_BUFSIZE) { - perror("read"); - exit(1); - } - - printf("%d\n", N_COFFTXTOFF(*((struct filehdr *)buf), - *((struct aouthdr *)(buf + sizeof(struct filehdr)))) ); -} diff --git a/sys/arch/alpha/stand/bootxx/libsa/Makefile b/sys/arch/alpha/stand/bootxx/libsa/Makefile deleted file mode 100644 index 697e1aac980..00000000000 --- a/sys/arch/alpha/stand/bootxx/libsa/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -# $NetBSD: Makefile,v 1.2 1995/02/16 02:33:14 cgd Exp $ - -LIB= sa -#SRCS= alloc.c bzero.c close.c dev.c devopen.c disklabel.c getfile.c \ -# gets.c ioctl.c lseek.c open.c printf.c read.c strcmp.c ufs.c \ -# write.c bcopy.c filesystem.c strlen.c ntohl.c -SRCS+= alloc.c bzero.c ufs.c read.c bcopy.c lseek.c #open.c - -#.PATH: ../../../../lib/libsa ../../../../lib/libkern -#.PATH: /sys/lib/libsa /sys/lib/libkern -.PATH: /sys/lib/libkern -NOPIC=nopic -NOPROFILE=noprofile - -.include <bsd.lib.mk> - -#CFLAGS= -mno-fp-regs -I../../../.. -I. -DCOMPAT_UFS -#CFLAGS= -O6 -mno-fp-regs -I.. -I/sys -I. -DCOMPAT_UFS -CFLAGS= -mno-fp-regs -I.. -I/sys -I. -DCOMPAT_UFS -finline-functions -O6 diff --git a/sys/arch/alpha/stand/bootxx/libsa/alloc.c b/sys/arch/alpha/stand/bootxx/libsa/alloc.c deleted file mode 100644 index a71313f9a04..00000000000 --- a/sys/arch/alpha/stand/bootxx/libsa/alloc.c +++ /dev/null @@ -1,110 +0,0 @@ -/* $NetBSD: alloc.c,v 1.1 1995/02/13 23:08:35 cgd Exp $ */ - -/*- - * Copyright (c) 1993 - * The Regents of the University of California. All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * The Mach Operating System project at Carnegie-Mellon University. - * - * 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. - * - * @(#)alloc.c 8.1 (Berkeley) 6/11/93 - * - * - * Copyright (c) 1989, 1990, 1991 Carnegie Mellon University - * All Rights Reserved. - * - * Author: Alessandro Forin - * - * Permission to use, copy, modify and distribute this software and its - * documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR - * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie the - * rights to redistribute these changes. - */ - -#include <sys/param.h> - -/* - * Dynamic memory allocator - */ -struct fl { - struct fl *next; - unsigned size; -} *freelist = (struct fl *)0; - -extern char _end[]; -static char *top = _end; - -void * -alloc(size) - unsigned size; -{ - register struct fl *f = freelist, **prev; - - prev = &freelist; - while (f && f->size < size) { - prev = &f->next; - f = f->next; - } - if (f == (struct fl *)0) { - f = (struct fl *)top; - top += ALIGN(size); - } else - *prev = f->next; - bzero(f, size); - return ((void *)f); -} - -void -free(ptr, size) - void *ptr; - unsigned size; -{ - register struct fl *f = (struct fl *)ptr; - - f->size = ALIGN(size); - f->next = freelist; - freelist = f; -} diff --git a/sys/arch/alpha/stand/bootxx/libsa/bcopy.c b/sys/arch/alpha/stand/bootxx/libsa/bcopy.c deleted file mode 100644 index 4f1f4d0b2b2..00000000000 --- a/sys/arch/alpha/stand/bootxx/libsa/bcopy.c +++ /dev/null @@ -1,72 +0,0 @@ -/* $NetBSD: bcopy.c,v 1.1 1995/02/13 23:08:35 cgd Exp $ */ - -/*- - * Copyright (c) 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. - * - * @(#)bcopy.c 8.1 (Berkeley) 6/11/93 - */ - -#include <sys/types.h> - -/* - * This is designed to be small, not fast. - */ -void -bcopy(s1, s2, n) - const void *s1; - void *s2; - size_t n; -{ - register const char *f = s1; - register char *t = s2; - - if (f < t) { - f += n; - t += n; - while (n-- > 0) - *--t = *--f; - } else - while (n-- > 0) - *t++ = *f++; -} - -#if 0 -void * -memcpy(s1, s2, n) - void *s1; - const void *s2; - size_t n; -{ - bcopy(s2, s1, n); - return s1; -} -#endif diff --git a/sys/arch/alpha/stand/bootxx/libsa/devopen.c b/sys/arch/alpha/stand/bootxx/libsa/devopen.c deleted file mode 100644 index 321d02d0fa3..00000000000 --- a/sys/arch/alpha/stand/bootxx/libsa/devopen.c +++ /dev/null @@ -1,165 +0,0 @@ -/* $NetBSD: devopen.c,v 1.2 1995/02/16 02:33:15 cgd Exp $ */ - -/*- - * Copyright (c) 1992, 1993 - * The Regents of the University of California. All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * Ralph Campbell. - * - * 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. - * - * @(#)devopen.c 8.1 (Berkeley) 6/10/93 - */ - -#if 0 -#include "stand.h" -#endif - -/* - * Decode the string 'fname', open the device and return the remaining - * file name if any. - */ -static inline int -devopen(f, fname, file) - struct open_file *f; - const char *fname; - char **file; /* out */ -{ -#if 0 - register char *cp; - register char *ncp; - register struct devsw *dp; - register int c, i; - int ctlr = 0, unit = 0, part = 0; - char namebuf[20]; - int rc; - - cp = fname; - ncp = namebuf; - - /* look for a string like '5/rz0/vmunix' or '5/rz3f/vmunix */ - if ((c = *cp) >= '0' && c <= '9') { - ctlr = c - '0'; - /* skip the '/' */ - if (*++cp != '/') - return (ENXIO); - cp++; - while ((c = *cp) != '\0') { - if (c == '/') - break; - if (c >= '0' && c <= '9') { - /* read unit number */ - unit = c - '0'; - - /* look for a partition */ - if ((c = *++cp) >= 'a' && c <= 'h') { - part = c - 'a'; - c = *++cp; - } - if (c != '/') - return (ENXIO); - break; - } - if (ncp < namebuf + sizeof(namebuf) - 1) - *ncp++ = c; - cp++; - } - *ncp = '\0'; - /* - * XXX - * pulling strchr from the C library, should pull from libkern. - */ - } else if (strchr(cp, '(')) { - /* expect a string like 'rz(0,0,0)vmunix' */ - while ((c = *cp) != '\0') { - if (c == '(') { - cp++; - break; - } - if (ncp < namebuf + sizeof(namebuf) - 1) - *ncp++ = c; - cp++; - } - - /* get controller number */ - if ((c = *cp) >= '0' && c <= '9') { - ctlr = c - '0'; - c = *++cp; - } - - if (c == ',') { - /* get SCSI device number */ - if ((c = *++cp) >= '0' && c <= '9') { - unit = c - '0'; - c = *++cp; - } - - if (c == ',') { - /* get partition number */ - if ((c = *++cp) >= '0' && c <= '9') { - part = c - '0'; - c = *++cp; - } - } - } - if (c != ')') - return (ENXIO); - cp++; - *ncp = '\0'; - } else { - dp = devsw; - ctlr = unit = part = 0; - goto fnd; - } - - for (dp = devsw, i = 0; i < ndevs; dp++, i++) - if (dp->dv_name && strcmp(namebuf, dp->dv_name) == 0) - goto fnd; - printf("Unknown device '%s'\nKnown devices are:", namebuf); - for (dp = devsw, i = 0; i < ndevs; dp++, i++) - if (dp->dv_name) - printf(" %s", dp->dv_name); - printf("\n"); - return (ENXIO); - -fnd: - rc = (dp->dv_open)(f, ctlr, unit, part); - if (rc) - return (rc); - - f->f_dev = dp; - if (file && *cp != '\0') - *file = cp; - return (0); -#endif - - *file = fname; - return (diskopen(f, 0, 0,0)); -} diff --git a/sys/arch/alpha/stand/bootxx/libsa/disklabel.c b/sys/arch/alpha/stand/bootxx/libsa/disklabel.c deleted file mode 100644 index 70ee3c0ecaf..00000000000 --- a/sys/arch/alpha/stand/bootxx/libsa/disklabel.c +++ /dev/null @@ -1,53 +0,0 @@ -/* $NetBSD: disklabel.c,v 1.1 1995/02/13 23:08:38 cgd Exp $ */ - -/*- - * Copyright (c) 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. - * - * @(#)disklabel.c 8.1 (Berkeley) 6/11/93 - */ - -#if 0 -#include <sys/param.h> -#include <sys/disklabel.h> -#endif - -static inline char * -getdisklabel(buf, lp) - const char *buf; - struct disklabel *lp; -{ - struct disklabel *dlp, *elp; - char *msg = (char *)0; - - *lp = *(struct disklabel *)(buf + LABELOFFSET); - return (msg); -} diff --git a/sys/arch/alpha/stand/bootxx/libsa/lseek.c b/sys/arch/alpha/stand/bootxx/libsa/lseek.c deleted file mode 100644 index 445f4f03607..00000000000 --- a/sys/arch/alpha/stand/bootxx/libsa/lseek.c +++ /dev/null @@ -1,89 +0,0 @@ -/* $NetBSD: lseek.c,v 1.1 1995/02/13 23:08:39 cgd Exp $ */ - -/*- - * Copyright (c) 1993 - * The Regents of the University of California. All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * The Mach Operating System project at Carnegie-Mellon University. - * - * 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. - * - * @(#)lseek.c 8.1 (Berkeley) 6/11/93 - * - * - * Copyright (c) 1989, 1990, 1991 Carnegie Mellon University - * All Rights Reserved. - * - * Author: Alessandro Forin - * - * Permission to use, copy, modify and distribute this software and its - * documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR - * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie the - * rights to redistribute these changes. - */ - -#include "stand.h" - -off_t -lseek(fd, offset, where) - int fd; - off_t offset; - int where; -{ - register struct open_file *f = &files[fd]; - -#if 0 - if ((unsigned)fd >= SOPEN_MAX || f->f_flags == 0) { - return (-1); - } - - /* seek is not supported on raw devices */ - if (f->f_flags & F_RAW) { - return ((off_t)-1); - } -#endif - - return ufs_seek(f, offset, where); -} diff --git a/sys/arch/alpha/stand/bootxx/libsa/open.c b/sys/arch/alpha/stand/bootxx/libsa/open.c deleted file mode 100644 index 0af547acabe..00000000000 --- a/sys/arch/alpha/stand/bootxx/libsa/open.c +++ /dev/null @@ -1,125 +0,0 @@ -/* $NetBSD: open.c,v 1.1 1995/02/13 23:08:40 cgd Exp $ */ - -/*- - * Copyright (c) 1993 - * The Regents of the University of California. All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * The Mach Operating System project at Carnegie-Mellon University. - * - * 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. - * - * @(#)open.c 8.1 (Berkeley) 6/11/93 - * - * - * Copyright (c) 1989, 1990, 1991 Carnegie Mellon University - * All Rights Reserved. - * - * Author: Alessandro Forin - * - * Permission to use, copy, modify and distribute this software and its - * documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR - * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie the - * rights to redistribute these changes. - */ - -#if 0 -#include "stand.h" -#endif - -#include "../disk.c" -#include "devopen.c" - -struct open_file files[SOPEN_MAX]; - - -/* - * File primitives proper - */ - -static inline int -open(fname, mode) - const char *fname; - int mode; -{ - register struct open_file *f; - register int fd, i, error; - char *file; - - /* find a free file descriptor */ - for (fd = 0, f = files; fd < SOPEN_MAX; fd++, f++) - if (f->f_flags == 0) - goto fnd; - return (-1); -fnd: - /* - * Try to open the device. - * Convert open mode (0,1,2) to F_READ, F_WRITE. - */ - f->f_flags = /* 0 + */ 1; - file = (char *)0; - error = devopen(f, fname, &file); -/*puts("just devopened\n");*/ - if (error) - goto err; - - /* see if we opened a raw device; otherwise, 'file' is the file name. */ - if (file == (char *)0) { - f->f_flags |= F_RAW; -/*puts("was raw, return");*/ - return (0); - } - - /* pass file name to the different filesystem open routines */ -/*puts("going to ufs_open: ");*/ -/*puts(file);*/ -/*puts("\n");*/ - error = ufs_open(file, f); - if (error == 0) - return (fd); - -err: - f->f_flags = 0; - return (-1); -} diff --git a/sys/arch/alpha/stand/bootxx/libsa/read.c b/sys/arch/alpha/stand/bootxx/libsa/read.c deleted file mode 100644 index 895b2ecdd7a..00000000000 --- a/sys/arch/alpha/stand/bootxx/libsa/read.c +++ /dev/null @@ -1,93 +0,0 @@ -/* $NetBSD: read.c,v 1.1 1995/02/13 23:08:41 cgd Exp $ */ - -/*- - * Copyright (c) 1993 - * The Regents of the University of California. All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * The Mach Operating System project at Carnegie-Mellon University. - * - * 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. - * - * @(#)read.c 8.1 (Berkeley) 6/11/93 - * - * - * Copyright (c) 1989, 1990, 1991 Carnegie Mellon University - * All Rights Reserved. - * - * Author: Alessandro Forin - * - * Permission to use, copy, modify and distribute this software and its - * documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR - * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie the - * rights to redistribute these changes. - */ - -#include "stand.h" - -int -read(fd, dest, bcount) - int fd; - void *dest; - u_int bcount; -{ - register struct open_file *f = &files[fd]; - u_int resid; - -#if 0 - if ((unsigned)fd >= SOPEN_MAX || !(f->f_flags & F_READ)) { - return (-1); - } -#endif - if (f->f_flags & F_RAW) { - if (diskstrategy(f->f_devdata, F_READ, - (daddr_t)0, bcount, dest, &resid)) - return (-1); - return (resid); - } - resid = bcount; - if (ufs_read(f, dest, bcount, &resid)) - return (-1); - return (bcount - resid); -} diff --git a/sys/arch/alpha/stand/bootxx/libsa/strcmp.c b/sys/arch/alpha/stand/bootxx/libsa/strcmp.c deleted file mode 100644 index 355a29134dd..00000000000 --- a/sys/arch/alpha/stand/bootxx/libsa/strcmp.c +++ /dev/null @@ -1,62 +0,0 @@ -/* $NetBSD: strcmp.c,v 1.1 1995/02/13 23:08:42 cgd Exp $ */ - -/*- - * Copyright (c) 1990 The Regents of the University of California. - * All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * Chris Torek. - * - * 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. - */ - -#if defined(LIBC_SCCS) && !defined(lint) -#ifdef notdef -static char *sccsid = "@(#)strcmp.c 5.5 (Berkeley) 1/26/91"; -#endif -static char *rcsid = "$NetBSD: strcmp.c,v 1.1 1995/02/13 23:08:42 cgd Exp $"; -#endif /* LIBC_SCCS and not lint */ - -#if 0 -#include <sys/cdefs.h> -#include <string.h> -#endif - -/* - * Compare strings. - */ -static inline int -strcmp(s1, s2) - register const char *s1, *s2; -{ - while (*s1 == *s2++) - if (*s1++ == 0) - return (0); - return (*(unsigned char *)s1 - *(unsigned char *)--s2); -} diff --git a/sys/arch/alpha/stand/bootxx/libsa/strlen.c b/sys/arch/alpha/stand/bootxx/libsa/strlen.c deleted file mode 100644 index fb33e6ddac8..00000000000 --- a/sys/arch/alpha/stand/bootxx/libsa/strlen.c +++ /dev/null @@ -1,58 +0,0 @@ -/* $NetBSD: strlen.c,v 1.1 1995/02/13 23:08:43 cgd Exp $ */ - -/*- - * Copyright (c) 1990 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. - */ - -#if defined(LIBC_SCCS) && !defined(lint) -#ifdef notdef -static char *sccsid = "@(#)strlen.c 5.5 (Berkeley) 1/26/91"; -#endif -static char *rcsid = "$NetBSD: strlen.c,v 1.1 1995/02/13 23:08:43 cgd Exp $"; -#endif /* LIBC_SCCS and not lint */ - -#if 0 -#include <sys/cdefs.h> -/*#include <string.h>*/ -#include <lib/libkern/libkern.h> -#endif - -static inline size_t -strlen(str) - const char *str; -{ - register const char *s; - - for (s = str; *s; ++s); - return(s - str); -} - diff --git a/sys/arch/alpha/stand/bootxx/libsa/ufs.c b/sys/arch/alpha/stand/bootxx/libsa/ufs.c deleted file mode 100644 index e8b4bb60c8a..00000000000 --- a/sys/arch/alpha/stand/bootxx/libsa/ufs.c +++ /dev/null @@ -1,690 +0,0 @@ -/* $NetBSD: ufs.c,v 1.1 1995/02/13 23:08:44 cgd Exp $ */ - -/*- - * Copyright (c) 1993 - * The Regents of the University of California. All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * The Mach Operating System project at Carnegie-Mellon University. - * - * 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. - * - * - * Copyright (c) 1990, 1991 Carnegie Mellon University - * All Rights Reserved. - * - * Author: David Golub - * - * Permission to use, copy, modify and distribute this software and its - * documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR - * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie the - * rights to redistribute these changes. - */ - -/* - * Stand-alone file reading package. - */ - -#include <string.h> -#include <sys/param.h> -#include <sys/time.h> -#include <ufs/ffs/fs.h> -#include <ufs/ufs/dinode.h> -#include <ufs/ufs/dir.h> -#include <lib/libkern/libkern.h> - -#include "stand.h" - -#include "strcmp.c" -#include "strlen.c" - -/* - * In-core open file. - */ -struct file { - off_t f_seekp; /* seek pointer */ - struct fs *f_fs; /* pointer to super-block */ - struct dinode f_di; /* copy of on-disk inode */ - int f_nindir[NIADDR]; - /* number of blocks mapped by - indirect block at level i */ - char *f_blk[NIADDR]; /* buffer for indirect block at - level i */ - u_int f_blksize[NIADDR]; - /* size of buffer */ - daddr_t f_blkno[NIADDR];/* disk address of block in buffer */ - char *f_buf; /* buffer for data block */ - u_int f_buf_size; /* size of data block */ - daddr_t f_buf_blkno; /* block number of data block */ -}; - -#ifdef COMPAT_UFS -/* - * Sanity checks for old file systems. - * - * XXX - goes away some day. - */ -static inline void -ffs_oldfscompat(fs) - struct fs *fs; -{ - int i; - - fs->fs_npsect = max(fs->fs_npsect, fs->fs_nsect); /* XXX */ - fs->fs_interleave = max(fs->fs_interleave, 1); /* XXX */ - if (fs->fs_postblformat == FS_42POSTBLFMT) /* XXX */ - fs->fs_nrpos = 8; /* XXX */ - if (fs->fs_inodefmt < FS_44INODEFMT) { /* XXX */ - quad_t sizepb = fs->fs_bsize; /* XXX */ - /* XXX */ - fs->fs_maxfilesize = fs->fs_bsize * NDADDR - 1; /* XXX */ - for (i = 0; i < NIADDR; i++) { /* XXX */ - sizepb *= NINDIR(fs); /* XXX */ - fs->fs_maxfilesize += sizepb; /* XXX */ - } /* XXX */ - fs->fs_qbmask = ~fs->fs_bmask; /* XXX */ - fs->fs_qfmask = ~fs->fs_fmask; /* XXX */ - } /* XXX */ -} -#endif - -/* - * Read a new inode into a file structure. - */ -static int -read_inode(inumber, f) - ino_t inumber; - struct open_file *f; -{ - register struct file *fp = (struct file *)f->f_fsdata; - register struct fs *fs = fp->f_fs; - char *buf; - u_int rsize; - int rc; - - /* - * Read inode and save it. - */ - buf = alloc(fs->fs_bsize); - rc = diskstrategy(f->f_devdata, F_READ, - fsbtodb(fs, ino_to_fsba(fs, inumber)), fs->fs_bsize, buf, &rsize); - if (rc || rsize != fs->fs_bsize) - goto out; - - { - register struct dinode *dp; - - dp = (struct dinode *)buf; - fp->f_di = dp[ino_to_fsbo(fs, inumber)]; - } - - /* - * Clear out the old buffers - */ - { - register int level; - - for (level = 0; level < NIADDR; level++) - fp->f_blkno[level] = -1; - fp->f_buf_blkno = -1; - } -out: - free(buf, fs->fs_bsize); - return (0); -} - -/* - * Given an offset in a file, find the disk block number that - * contains that block. - */ -static int -block_map(f, file_block, disk_block_p) - struct open_file *f; - daddr_t file_block; - daddr_t *disk_block_p; /* out */ -{ - register struct file *fp = (struct file *)f->f_fsdata; - register struct fs *fs = fp->f_fs; - int level; - int idx; - daddr_t ind_block_num; - daddr_t *ind_p; - int rc; - - /* - * Index structure of an inode: - * - * di_db[0..NDADDR-1] hold block numbers for blocks - * 0..NDADDR-1 - * - * di_ib[0] index block 0 is the single indirect block - * holds block numbers for blocks - * NDADDR .. NDADDR + NINDIR(fs)-1 - * - * di_ib[1] index block 1 is the double indirect block - * holds block numbers for INDEX blocks for blocks - * NDADDR + NINDIR(fs) .. - * NDADDR + NINDIR(fs) + NINDIR(fs)**2 - 1 - * - * di_ib[2] index block 2 is the triple indirect block - * holds block numbers for double-indirect - * blocks for blocks - * NDADDR + NINDIR(fs) + NINDIR(fs)**2 .. - * NDADDR + NINDIR(fs) + NINDIR(fs)**2 - * + NINDIR(fs)**3 - 1 - */ - - if (file_block < NDADDR) { - /* Direct block. */ - *disk_block_p = fp->f_di.di_db[file_block]; - return (0); - } - - file_block -= NDADDR; - - /* - * nindir[0] = NINDIR - * nindir[1] = NINDIR**2 - * nindir[2] = NINDIR**3 - * etc - */ - for (level = 0; level < NIADDR; level++) { - if (file_block < fp->f_nindir[level]) - break; - file_block -= fp->f_nindir[level]; - } - if (level == NIADDR) { - /* Block number too high */ - return (EFBIG); - } - - ind_block_num = fp->f_di.di_ib[level]; - - for (; level >= 0; level--) { - if (ind_block_num == 0) { - *disk_block_p = 0; /* missing */ - return (0); - } - - if (fp->f_blkno[level] != ind_block_num) { - if (fp->f_blk[level] == (char *)0) - fp->f_blk[level] = - alloc(fs->fs_bsize); - rc = diskstrategy(f->f_devdata, F_READ, - fsbtodb(fp->f_fs, ind_block_num), - fs->fs_bsize, - fp->f_blk[level], - (u_int *)&fp->f_blksize[level]); - if (rc) - return (rc); - if (fp->f_blksize[level] != fs->fs_bsize) - return (EIO); - fp->f_blkno[level] = ind_block_num; - } - - ind_p = (daddr_t *)fp->f_blk[level]; - - if (level > 0) { - idx = file_block / fp->f_nindir[level - 1]; - file_block %= fp->f_nindir[level - 1]; - } else - idx = file_block; - - ind_block_num = ind_p[idx]; - } - - *disk_block_p = ind_block_num; - - return (0); -} - -/* - * Read a portion of a file into an internal buffer. Return - * the location in the buffer and the amount in the buffer. - */ -static int -buf_read_file(f, buf_p, size_p) - struct open_file *f; - char **buf_p; /* out */ - u_int *size_p; /* out */ -{ - register struct file *fp = (struct file *)f->f_fsdata; - register struct fs *fs = fp->f_fs; - long off; - register daddr_t file_block; - daddr_t disk_block; - long block_size; - int rc; - - off = blkoff(fs, fp->f_seekp); - file_block = lblkno(fs, fp->f_seekp); - block_size = dblksize(fs, &fp->f_di, file_block); - - if (file_block != fp->f_buf_blkno) { - rc = block_map(f, file_block, &disk_block); - if (rc) - return (rc); - - if (fp->f_buf == (char *)0) - fp->f_buf = alloc(fs->fs_bsize); - - if (disk_block == 0) { - bzero(fp->f_buf, block_size); - fp->f_buf_size = block_size; - } else { - rc = diskstrategy(f->f_devdata, F_READ, - fsbtodb(fs, disk_block), - block_size, fp->f_buf, &fp->f_buf_size); - if (rc) - return (rc); - } - - fp->f_buf_blkno = file_block; - } - - /* - * Return address of byte in buffer corresponding to - * offset, and size of remainder of buffer after that - * byte. - */ - *buf_p = fp->f_buf + off; - *size_p = block_size - off; - - /* - * But truncate buffer at end of file. - */ - if (*size_p > fp->f_di.di_size - fp->f_seekp) - *size_p = fp->f_di.di_size - fp->f_seekp; - - return (0); -} - -/* - * Search a directory for a name and return its - * i_number. - */ -static inline int -search_directory(name, f, inumber_p) - char *name; - struct open_file *f; - ino_t *inumber_p; /* out */ -{ - register struct file *fp = (struct file *)f->f_fsdata; - register struct direct *dp; - struct direct *edp; - char *buf; - u_int buf_size; - int namlen, length; - int rc; - - length = strlen(name); - - fp->f_seekp = 0; - while (fp->f_seekp < fp->f_di.di_size) { - rc = buf_read_file(f, &buf, &buf_size); - if (rc) - return (rc); - - dp = (struct direct *)buf; - edp = (struct direct *)(buf + buf_size); - while (dp < edp) { - if (dp->d_ino == (ino_t)0) - goto next; -#if BYTE_ORDER == LITTLE_ENDIAN - if (fp->f_fs->fs_maxsymlinklen <= 0) - namlen = dp->d_type; - else -#endif - namlen = dp->d_namlen; - if (namlen == length && - !strcmp(name, dp->d_name)) { - /* found entry */ - *inumber_p = dp->d_ino; - return (0); - } - next: - dp = (struct direct *)((char *)dp + dp->d_reclen); - } - fp->f_seekp += buf_size; - } - return (ENOENT); -} - -/* - * Open a file. - */ -int -ufs_open(path, f) - char *path; - struct open_file *f; -{ - register char *cp, *ncp; - register int c; - ino_t inumber, parent_inumber; - struct file *fp; - struct fs *fs; - int rc; - u_int buf_size; -#if 0 - int nlinks = 0; - char namebuf[MAXPATHLEN+1]; -#endif - - /* allocate file system specific data structure */ - fp = alloc(sizeof(struct file)); - f->f_fsdata = (void *)fp; - - /* allocate space and read super block */ - fs = alloc(SBSIZE); - fp->f_fs = fs; - rc = diskstrategy(f->f_devdata, F_READ, - SBLOCK, SBSIZE, (char *)fs, &buf_size); - if (rc) - goto out; - - if (buf_size != SBSIZE || fs->fs_magic != FS_MAGIC || - fs->fs_bsize > MAXBSIZE || fs->fs_bsize < sizeof(struct fs)) { - rc = EINVAL; - goto out; - } -#ifdef COMPAT_UFS - ffs_oldfscompat(fs); -#endif - - /* - * Calculate indirect block levels. - */ - { - register int mult; - register int level; - - mult = 1; - for (level = 0; level < NIADDR; level++) { - mult *= NINDIR(fs); - fp->f_nindir[level] = mult; - } - } - - inumber = ROOTINO; - if ((rc = read_inode(inumber, f)) != 0) - goto out; - - cp = path; - while (*cp) { - - /* - * Remove extra separators - */ - while (*cp == '/') - cp++; - if (*cp == '\0') - break; - - /* - * Check that current node is a directory. - */ - if ((fp->f_di.di_mode & IFMT) != IFDIR) { - rc = ENOTDIR; - goto out; - } - - /* - * Get next component of path name. - */ - { - register int len = 0; - - ncp = cp; - while ((c = *cp) != '\0' && c != '/') { - if (++len > MAXNAMLEN) { - rc = ENOENT; - goto out; - } - cp++; - } - *cp = '\0'; - } - - /* - * Look up component in current directory. - * Save directory inumber in case we find a - * symbolic link. - */ - parent_inumber = inumber; - rc = search_directory(ncp, f, &inumber); - *cp = c; - if (rc) - goto out; - - /* - * Open next component. - */ - if ((rc = read_inode(inumber, f)) != 0) - goto out; - -#if 0 - /* - * Check for symbolic link. - */ - if ((fp->i_mode & IFMT) == IFLNK) { - int link_len = fp->f_di.di_size; - int len; - - len = strlen(cp) + 1; - - if (fp->f_di.di_size >= MAXPATHLEN - 1 || - ++nlinks > MAXSYMLINKS) { - rc = ENOENT; - goto out; - } - - strcpy(&namebuf[link_len], cp); - - if ((fp->i_flags & IC_FASTLINK) != 0) { - bcopy(fp->i_symlink, namebuf, (unsigned) link_len); - } else { - /* - * Read file for symbolic link - */ - char *buf; - u_int buf_size; - daddr_t disk_block; - register struct fs *fs = fp->f_fs; - - (void) block_map(f, (daddr_t)0, &disk_block); - rc = device_read(&fp->f_dev, - fsbtodb(fs, disk_block), - blksize(fs, fp, 0), - &buf, &buf_size); - if (rc) - goto out; - - bcopy((char *)buf, namebuf, (unsigned)link_len); - free(buf, buf_size); - } - - /* - * If relative pathname, restart at parent directory. - * If absolute pathname, restart at root. - */ - cp = namebuf; - if (*cp != '/') - inumber = parent_inumber; - else - inumber = (ino_t)ROOTINO; - - if ((rc = read_inode(inumber, fp)) != 0) - goto out; - } -#endif - } - - /* - * Found terminal component. - */ - rc = 0; -out: - if (rc) - free(fp, sizeof(struct file)); - return (rc); -} - -int -ufs_close(f) - struct open_file *f; -{ - register struct file *fp = (struct file *)f->f_fsdata; - int level; - - f->f_fsdata = (void *)0; - if (fp == (struct file *)0) - return (0); - - for (level = 0; level < NIADDR; level++) { - if (fp->f_blk[level]) - free(fp->f_blk[level], fp->f_fs->fs_bsize); - } - if (fp->f_buf) - free(fp->f_buf, fp->f_fs->fs_bsize); - free(fp->f_fs, SBSIZE); - free(fp, sizeof(struct file)); - return (0); -} - -/* - * Copy a portion of a file into kernel memory. - * Cross block boundaries when necessary. - */ -int -ufs_read(f, start, size, resid) - struct open_file *f; - char *start; - u_int size; - u_int *resid; /* out */ -{ - register struct file *fp = (struct file *)f->f_fsdata; - register u_int csize; - char *buf; - u_int buf_size; - int rc = 0; - - while (size != 0) { - if (fp->f_seekp >= fp->f_di.di_size) - break; - - rc = buf_read_file(f, &buf, &buf_size); - if (rc) - break; - - csize = size; - if (csize > buf_size) - csize = buf_size; - - bcopy(buf, start, csize); - - fp->f_seekp += csize; - start += csize; - size -= csize; - } - if (resid) - *resid = size; - return (rc); -} - -#if 0 -/* - * Not implemented. - */ -int -ufs_write(f, start, size, resid) - struct open_file *f; - char *start; - u_int size; - u_int *resid; /* out */ -{ - - return (EROFS); -} -#endif - -off_t -ufs_seek(f, offset, where) - struct open_file *f; - off_t offset; - int where; -{ - register struct file *fp = (struct file *)f->f_fsdata; - - switch (where) { - case SEEK_SET: - fp->f_seekp = offset; - break; - case SEEK_CUR: - fp->f_seekp += offset; - break; - case SEEK_END: - fp->f_seekp = fp->f_di.di_size - offset; - break; - default: - return (-1); - } - return (fp->f_seekp); -} - -#if 0 -int -ufs_stat(f, sb) - struct open_file *f; - struct stat *sb; -{ - register struct file *fp = (struct file *)f->f_fsdata; - - /* only important stuff */ - sb->st_mode = fp->f_di.di_mode; - sb->st_uid = fp->f_di.di_uid; - sb->st_gid = fp->f_di.di_gid; - sb->st_size = fp->f_di.di_size; - return (0); -} -#endif diff --git a/sys/arch/alpha/stand/bootxx/prom.c b/sys/arch/alpha/stand/bootxx/prom.c deleted file mode 100644 index 5038ef2321f..00000000000 --- a/sys/arch/alpha/stand/bootxx/prom.c +++ /dev/null @@ -1,118 +0,0 @@ -/* $NetBSD: prom.c,v 1.3 1995/06/28 00:59:04 cgd Exp $ */ - -/* - * Mach Operating System - * Copyright (c) 1992 Carnegie Mellon University - * All Rights Reserved. - * - * Permission to use, copy, modify and distribute this software and its - * documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR - * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie Mellon - * the rights to redistribute these changes. - */ - -#include <sys/types.h> - -#include <machine/prom.h> -#include <machine/rpb.h> - -#define PUTS 0 - -#if PUTS -int console; -#endif - -void -init_prom_calls() -{ - extern struct prom_vec prom_dispatch_v; - struct rpb *r; - struct crb *c; - char buf[4]; - - r = (struct rpb *)HWRPB_ADDR; - c = (struct crb *)((u_int8_t *)r + r->rpb_crb_off); - - prom_dispatch_v.routine_arg = c->crb_v_dispatch; - prom_dispatch_v.routine = c->crb_v_dispatch->code; - -#if PUTS - /* Look for console tty. */ - prom_getenv(PROM_E_TTY_DEV, buf, 4); - console = buf[0] - '0'; -#endif -} - -#if PUTS -static inline void -putchar(c) - int c; -{ - char cbuf; - - if (c == '\r' || c == '\n') { - cbuf = '\r'; - do { - ret.bits = prom_dispatch(PROM_R_PUTS, console, - &cbuf, 1); - } while ((ret.u.retval & 1) == 0); - cbuf = '\n'; - } else - cbuf = c; - do { - ret.bits = prom_dispatch(PROM_R_PUTS, console, &cbuf, 1); - } while ((ret.u.retval & 1) == 0); -} - -void -puts(s) - char *s; -{ - while (*s) - putchar(*s++); -} -#endif - -int -prom_getenv(id, buf, len) - int id, len; - char *buf; -{ - prom_return_t ret; - - ret.bits = prom_dispatch(PROM_R_GETENV, id, buf, len-1); - if (ret.u.status & 0x4) - ret.u.retval = 0; - buf[ret.u.retval] = '\0'; - - return (ret.u.retval); -} - -int -prom_open(dev, len) - char *dev; - int len; -{ - prom_return_t ret; - - ret.bits = prom_dispatch(PROM_R_OPEN, dev, len); - if (ret.u.status & 0x4) - return (-1); - else - return (ret.u.retval); -} diff --git a/sys/arch/alpha/stand/bootxx/prom_disp.S b/sys/arch/alpha/stand/bootxx/prom_disp.S deleted file mode 100644 index b0ff78df367..00000000000 --- a/sys/arch/alpha/stand/bootxx/prom_disp.S +++ /dev/null @@ -1,116 +0,0 @@ -/* $NetBSD: prom_disp.S,v 1.2 1995/02/16 02:33:12 cgd Exp $ */ - -/* - * Copyright (c) 1994, 1995 Carnegie-Mellon University. - * All rights reserved. - * - * Author: Chris G. Demetriou - * - * Permission to use, copy, modify and distribute this software and - * its documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND - * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie the - * rights to redistribute these changes. - */ - -#ifndef LOCORE -#include "../include/asm.h" -#include "../include/prom.h" -#include "../include/rpb.h" -#endif - - .globl prom_dispatch_v - .comm prom_dispatch_v 16 - - .text - .align 4 - -/* - * Dispatcher routine. Implements prom's calling machinery, saves our - * callee-saved registers as required by C. - */ -#define D_RA (7*8) -#define D_S0 (8*8) -#define D_S1 (9*8) -#define D_S2 (10*8) -#define D_S3 (11*8) -#define D_S4 (12*8) -#define D_S5 (13*8) -#define D_S6 (14*8) -#define DISPATCH_FRAME_SIZE (15*8) -#define DISPATCH_REGS IM_RA|IM_S0|IM_S1|IM_S2|IM_S3|IM_S4|IM_S5|IM_S6 - -NESTED(prom_dispatch, 5, DISPATCH_FRAME_SIZE, ra, DISPATCH_REGS, 0) - -/* ldgp gp, 0(pv)*/ - SETGP(pv) - - lda sp, -DISPATCH_FRAME_SIZE(sp) - stq ra, D_RA(sp) - stq s0, D_S0(sp) - stq s1, D_S1(sp) - stq s2, D_S2(sp) - stq s3, D_S3(sp) - stq s4, D_S4(sp) - stq s5, D_S5(sp) - stq s6, D_S6(sp) - - /* Lord have mercy because.. I would not. */ -/* #define STUPID_PROM_IS_32_BITS */ -#ifdef STUPID_PROM_IS_32_BITS - ldah s0, 0x2000(zero) /* hack for hack */ - lda s0, (0x2000-8)(s0) - - stq sp, 0(s0) - or s0, zero, sp -#endif /* STUPID_PROM_IS_32_BITS */ - - lda pv, prom_dispatch_v - ldq v0, 0(pv) /* routine */ - ldq pv, 8(pv) /* routine_arg */ - - jsr ra, (v0) - -#ifdef STUPID_PROM_IS_32_BITS - ldah s0, 0x2000(zero) /* hack for hack */ - lda s0, (0x2000-8)(s0) - - ldq sp, 0(s0) -#endif /* STUPID_PROM_IS_32_BITS */ - - ldq ra, D_RA(sp) - ldq s0, D_S0(sp) - ldq s1, D_S1(sp) - ldq s2, D_S2(sp) - ldq s3, D_S3(sp) - ldq s4, D_S4(sp) - ldq s5, D_S5(sp) - ldq s6, D_S6(sp) - lda sp, DISPATCH_FRAME_SIZE(sp) - RET -END(prom_dispatch) - -#undef D_RA -#undef D_S0 -#undef D_S1 -#undef D_S2 -#undef D_S3 -#undef D_S4 -#undef D_S5 -#undef D_S6 -#undef DISPATCH_FRAME_SIZE -#undef DISPATCH_REGS diff --git a/sys/arch/alpha/stand/bootxx/stand.h b/sys/arch/alpha/stand/bootxx/stand.h deleted file mode 100644 index 66f93ebcad2..00000000000 --- a/sys/arch/alpha/stand/bootxx/stand.h +++ /dev/null @@ -1,98 +0,0 @@ -/* $NetBSD: stand.h,v 1.1 1995/02/13 23:08:31 cgd Exp $ */ - -/*- - * Copyright (c) 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. - * - * @(#)stand.h 8.1 (Berkeley) 6/11/93 - */ - -#include <sys/types.h> -#include <sys/cdefs.h> -#include <sys/stat.h> -#include <lib/libsa/saioctl.h> -#include <lib/libsa/saerrno.h> - -#ifndef NULL -#define NULL 0 -#endif - -/* where values for lseek(2) */ -#define SEEK_SET 0 /* set file offset to offset */ -#define SEEK_CUR 1 /* set file offset to current plus offset */ -#define SEEK_END 2 /* set file offset to EOF plus offset */ - -struct open_file { - int f_flags; /* see F_* below */ - void *f_devdata; /* device specific data */ - void *f_fsdata; /* file system specific data */ -}; - -#define SOPEN_MAX 2 -extern struct open_file files[SOPEN_MAX]; -extern int nfsys; - -/* f_flags values */ -#define F_READ 0x0001 /* file opened for reading */ -#define F_WRITE 0x0002 /* file opened for writing */ -#define F_RAW 0x0004 /* raw device open - no file system */ -#define F_NODEV 0x0008 /* network open - no device */ - -#define isupper(c) ((c) >= 'A' && (c) <= 'Z') -#define tolower(c) ((c) - 'A' + 'a') -#define isspace(c) ((c) == ' ' || (c) == '\t') -#define isdigit(c) ((c) >= '0' && (c) <= '9') - -int devopen __P((struct open_file *f, const char *fname, char **file)); -void *alloc __P((unsigned size)); -void free __P((void *ptr, unsigned size)); -struct disklabel; -char *getdisklabel __P((const char *buf, struct disklabel *lp)); - -void printf __P((const char *, ...)); -void gets __P((char *)); -__dead void panic __P((const char *, ...)) - __attribute__((noreturn)); -int getchar __P((void)); -int exec __P((char *, char *, int)); -int open __P((const char *,int)); -int close __P((int)); -int read __P((int, void *, u_int)); -int write __P((int, void *, u_int)); - -int nodev(), noioctl(); -void nullsys(); - -/* Machine dependent functions */ -void machdep_start __P((char *, int, char *, char *, char *)); -int machdep_exec __P((char *, char *, int)); -int getchar __P((void)); -void putchar __P((int)); diff --git a/sys/arch/alpha/stand/bootxx/start.S b/sys/arch/alpha/stand/bootxx/start.S deleted file mode 100644 index d694bc84374..00000000000 --- a/sys/arch/alpha/stand/bootxx/start.S +++ /dev/null @@ -1,69 +0,0 @@ -/* $NetBSD: start.S,v 1.2 1995/02/16 02:33:13 cgd Exp $ */ - -/* - * Mach Operating System - * Copyright (c) 1992 Carnegie Mellon University - * All Rights Reserved. - * - * Permission to use, copy, modify and distribute this software and its - * documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR - * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie Mellon - * the rights to redistribute these changes. - */ - -#include "../include/asm.h" - -/* - * start -- - * Entry point for boot/standalone programs. - * - * Arguments: - * a0 long (first free physical page) - * - * This is where the prom comes to. Leaves all exception and interrupts - * to prom, runs off prom's stack too. No return values. - */ - .text - .set noreorder /* don't reorder instructions */ - -#define ENTRY_FRAME 32 - -NESTED(start, 1, ENTRY_FRAME, ra, 0, 0) - br pv,1f /* XXX I have no idea what this does. */ -1: SETGP(pv) - -#if 0 - lda sp,start /* start stack below text */ - lda sp,-ENTRY_FRAME(sp) -#endif - lda a0,_EDATA - lda a1,_end - subq a1,a0,a1 - CALL(bzero) - - CALL(main) /* transfer to C */ - - call_pal PAL_halt /* halt if we ever return */ -END(start) - -/* - * Dummy routine for GCC2. - */ -LEAF(__main,0) - RET -END(__main) |