Annotation of sys/arch/sparc/stand/boot/boot.c, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: boot.c,v 1.6 2003/08/14 17:13:57 deraadt Exp $ */
2: /* $NetBSD: boot.c,v 1.2 1997/09/14 19:27:21 pk Exp $ */
3:
4: /*-
5: * Copyright (c) 1982, 1986, 1990, 1993
6: * The Regents of the University of California. All rights reserved.
7: *
8: * Redistribution and use in source and binary forms, with or without
9: * modification, are permitted provided that the following conditions
10: * are met:
11: * 1. Redistributions of source code must retain the above copyright
12: * notice, this list of conditions and the following disclaimer.
13: * 2. Redistributions in binary form must reproduce the above copyright
14: * notice, this list of conditions and the following disclaimer in the
15: * documentation and/or other materials provided with the distribution.
16: * 3. Neither the name of the University nor the names of its contributors
17: * may be used to endorse or promote products derived from this software
18: * without specific prior written permission.
19: *
20: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30: * SUCH DAMAGE.
31: *
32: * @(#)boot.c 8.1 (Berkeley) 6/10/93
33: */
34:
35: #include <sys/param.h>
36: #include <sys/reboot.h>
37: #include <a.out.h>
38: #include <lib/libsa/stand.h>
39:
40: #include <sparc/stand/common/promdev.h>
41:
42: void copyunix(int, char *);
43: void promsyms(int, struct exec *);
44: int debug;
45: int netif_debug;
46:
47: /*
48: * Boot device is derived from ROM provided information.
49: */
50: #define DEFAULT_KERNEL "bsd"
51:
52: extern char *version;
53: extern vaddr_t esym;
54: char fbuf[80], dbuf[128];
55:
56: typedef void (*entry_t)(caddr_t, int, int, int, long, long);
57: int loadfile(int, vaddr_t *);
58:
59: main(int argc, char *argv[])
60: {
61: int io;
62: char *file;
63: entry_t entry;
64:
65: prom_init();
66:
67: printf(">> OpenBSD BOOT %s\n", version);
68:
69: file = prom_bootfile;
70: if (file == 0 || *file == 0)
71: file = DEFAULT_KERNEL;
72:
73: for (;;) {
74: if (prom_boothow & RB_ASKNAME) {
75: printf("device[%s]: ", prom_bootdevice);
76: gets(dbuf);
77: if (dbuf[0])
78: prom_bootdevice = dbuf;
79: printf("boot: ");
80: gets(fbuf);
81: if (fbuf[0])
82: file = fbuf;
83: }
84: if ((io = open(file, 0)) >= 0)
85: break;
86: printf("open: %s: %s\n", file, strerror(errno));
87: prom_boothow |= RB_ASKNAME;
88: }
89:
90: printf("Booting %s @ 0x%x\n", file, LOADADDR);
91: loadfile(io, (vaddr_t *)&entry);
92:
93: /* Note: args 2-4 not used due to conflicts with SunOS loaders */
94: (*entry)(cputyp == CPU_SUN4 ? LOADADDR : (caddr_t)promvec,
95: 0, 0, 0, esym, DDB_MAGIC1);
96:
97: _rtt();
98: }
CVSweb