1/*	$NetBSD: promboot.c,v 1.2.10.1 2005/01/24 08:35:03 skrll Exp $	*/
2
3
4#include <sys/param.h>
5#include <sys/reboot.h>
6
7#include <machine/mon.h>
8
9#include "stand.h"
10#include "libsa.h"
11
12#ifdef DEBUG
13int 	debug = 0;
14#endif /* DEBUG */
15int 	prom_boothow;
16char *	prom_bootfile;
17char	prom_bootdev[32];
18
19/*
20 * Get useful info from the PROM bootparams struct, i.e.:
21 * arg[0] = sd(0,0,0)netbsd
22 * arg[1] = -sa
23 */
24
25void
26prom_get_boot_info(void)
27{
28	struct bootparam *bp;
29	char	c, *src, *dst;
30
31#ifdef	DEBUG
32	printf("prom_get_boot_info\n");
33#endif
34
35	bp = *romVectorPtr->bootParam;
36
37	/* Get device and file names. */
38	src = bp->argPtr[0];
39	dst = prom_bootdev;
40	*dst++ = *src++;
41	*dst++ = *src++;
42	if (*src == '(') {
43		while (*src) {
44			c = *src++;
45			*dst++ = c;
46			if (c == ')')
47				break;
48		}
49		*dst = '\0';
50	}
51	prom_bootfile = src;
52
53	/* Get boothowto flags. */
54	src = bp->argPtr[1];
55	if (src && (*src == '-')) {
56		while (*src) {
57			switch (*src++) {
58			case 'a':
59				prom_boothow |= RB_ASKNAME;
60				break;
61			case 's':
62				prom_boothow |= RB_SINGLE;
63				break;
64			case 'd':
65				prom_boothow |= RB_KDB;
66#ifdef DEBUG
67				debug++;
68#endif /* DEBUG */
69				break;
70			}
71		}
72	}
73
74#ifdef DEBUG
75	if (debug) {
76		printf("Debug level %d - enter c to continue...", debug);
77		/* This will print "\nAbort at ...\n" */
78		breakpoint();
79	}
80#endif /* DEBUG */
81}
82