Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/arch/pmax/stand/scsiboot CVS repository copy to bootxx.c
details: https://anonhg.NetBSD.org/src/rev/97bd79a3928f
branches: trunk
changeset: 467486:97bd79a3928f
user: simonb <simonb%NetBSD.org@localhost>
date: Thu Mar 25 04:42:06 1999 +0000
description:
CVS repository copy to bootxx.c
diffstat:
sys/arch/pmax/stand/scsiboot/boot.c | 163 ------------------------------------
1 files changed, 0 insertions(+), 163 deletions(-)
diffs (167 lines):
diff -r 75f3c4bbcc74 -r 97bd79a3928f sys/arch/pmax/stand/scsiboot/boot.c
--- a/sys/arch/pmax/stand/scsiboot/boot.c Thu Mar 25 04:34:03 1999 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,163 +0,0 @@
-/* $NetBSD: boot.c,v 1.12 1999/03/14 00:57:07 simonb 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 <sys/param.h>
-#include <sys/exec.h>
-#include <stand.h>
-#include <machine/dec_prom.h>
-
-#include "byteswap.h"
-
-int errno;
-
-/*
- * This gets arguments from the PROM, calls other routines to open
- * and load the program to boot, and then transfers execution to that
- * new program.
- * Argv[0] should be something like "rz(0,0,0)vmunix" on a DECstation 3100.
- * Argv[0,1] should be something like "boot 5/rz0/vmunix" on a DECstation 5000.
- * The argument "-a" means vmunix should do an automatic reboot.
- */
-int
-_main(argc, argv)
- int argc;
- char **argv;
-{
- register char *cp;
- int entry;
-
- /* check for DS5000 boot */
- if (strcmp(argv[0], "boot") == 0) {
- argc--;
- argv++;
- }
- cp = *argv;
- printf("Boot: %s\n", cp);
- entry = loadfile(cp);
- if (entry == -1)
- return 0;
-
- printf("Starting at 0x%x\n\n", entry);
- if (callv == &callvec)
- ((void (*)())entry)(argc, argv, 0, 0);
- else
- ((void (*)())entry)(argc, argv, DEC_PROM_MAGIC, callv);
-}
-
-/*
- * Open 'filename', read in program and return the entry point or -1 if error.
- */
-loadfile(fname)
- register char *fname;
-{
- register struct devices *dp;
- register int fd, i, n;
- struct exec aout;
- char *buf;
-
- if ((fd = open(fname, 0)) < 0) {
- printf("open(%s) failed: %d\n", fname, errno);
- goto err;
- }
-
- /* read the exec header */
- i = read(fd, (char *)&aout, sizeof(aout));
- if (i != sizeof(aout)) {
- printf("no aout header\n");
- goto cerr;
- } else if ((N_GETMAGIC(aout) != OMAGIC)
- && (aout.a_midmag & 0xfff) != OMAGIC) {
- printf("%s: bad magic %x\n", fname, aout.a_midmag);
- goto cerr;
- }
-
- /* read the code ... */
- printf("Size: %d", aout.a_text);
-#if 0
- /* In an OMAGIC file, we're already there. */
- if (lseek(fd, (off_t)N_TXTOFF(aout), 0) < 0) {
- goto cerr;
- }
-#endif
- n = read(fd, buf = (char *)aout.a_entry, aout.a_text);
- /* ... and initialized data */
- printf("+%d", aout.a_data);
- n += read(fd, buf + aout.a_text, aout.a_data);
- i = aout.a_text + aout.a_data;
-
- if (aout.a_syms) {
- /*
- * Copy exec header to start of bss.
- * Load symbols into end + sizeof(int).
- */
- memcpy(buf += i, (char *)&aout, sizeof(aout));
- printf("+[%d]", aout.a_syms + 4);
- n += read(fd, buf += aout.a_bss + 4, aout.a_syms + 4);
- i += aout.a_syms + 4;
- buf += aout.a_syms;
- n += read(fd, buf + 4, *(long *)buf);
- i += *(long *)buf;
- }
-#ifndef SMALL
- (void) close(fd);
-#endif
- if (n < 0) {
- printf("read error %d\n", errno);
- goto err;
- } else if (n != i) {
- printf("read() short %d bytes\n", i - n);
- goto err;
-
- }
-
- /* kernel will zero out its own bss */
- n = aout.a_bss;
- printf("+%d\n", n);
-
- return ((int)aout.a_entry);
-
-cerr:
-#ifndef SMALL
- (void) close(fd);
-#endif
-err:
- printf("Can't boot '%s'\n", fname);
- return (-1);
-}
Home |
Main Index |
Thread Index |
Old Index