1 /*	$OpenBSD: autoconf.c,v 1.10 2024/11/12 00:00:25 jsg Exp $	*/
2 
3 /*
4  * Copyright (c) 2020 Mark Kettenis <kettenis@openbsd.org>
5  *
6  * Permission to use, copy, modify, and distribute this software for any
7  * purpose with or without fee is hereby granted, provided that the above
8  * copyright notice and this permission notice appear in all copies.
9  *
10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17  */
18 
19 #include <sys/param.h>
20 #include <sys/device.h>
21 #include <sys/reboot.h>
22 #include <sys/systm.h>
23 
24 #if defined(NFSCLIENT)
25 #include <net/if.h>
26 #include <net/if_types.h>
27 #include <netinet/in.h>
28 #include <netinet/if_ether.h>
29 #endif
30 
31 void
cpu_configure(void)32 cpu_configure(void)
33 {
34 	splhigh();
35 
36 	softintr_init();
37 	config_rootfound("mainbus", NULL);
38 
39 	cold = 0;
40 	spl0();
41 }
42 
43 void
diskconf(void)44 diskconf(void)
45 {
46 #if defined(NFSCLIENT)
47 	extern uint8_t *bootmac;
48 	dev_t tmpdev = NODEV;
49 #endif
50 	struct device *bootdv = NULL;
51 	int part = 0;
52 
53 #if defined(NFSCLIENT)
54 	if (bootmac) {
55 		struct ifnet *ifp;
56 
57 		TAILQ_FOREACH(ifp, &ifnetlist, if_list) {
58 			if (ifp->if_type == IFT_ETHER &&
59 			    memcmp(bootmac, ((struct arpcom *)ifp)->ac_enaddr,
60 			    ETHER_ADDR_LEN) == 0)
61 				break;
62 		}
63 		if (ifp)
64 			bootdv = parsedisk(ifp->if_xname, strlen(ifp->if_xname),
65 			    0, &tmpdev);
66 	}
67 #endif
68 
69 	setroot(bootdv, part, RB_USERREQ);
70 }
71 
72 void
device_register(struct device * dev,void * aux)73 device_register(struct device *dev, void *aux)
74 {
75 }
76 
77 const struct nam2blk nam2blk[] = {
78 	{ "vnd",	1 },
79 	{ "rd",		2 },
80 	{ "sd",		3 },
81 	{ "cd",		4 },
82 	{ "wd",		5 },
83 	{ NULL,		-1 }
84 };
85