1*643b7c4eSflxd /* $NetBSD: booted_dev.c,v 1.4 2016/10/13 16:18:20 flxd Exp $ */
2f0bdf503Scgd
3f0bdf503Scgd /*
4f0bdf503Scgd * Copyright (c) 1999 Christopher G. Demetriou. All rights reserved.
5f0bdf503Scgd *
6f0bdf503Scgd * Redistribution and use in source and binary forms, with or without
7f0bdf503Scgd * modification, are permitted provided that the following conditions
8f0bdf503Scgd * are met:
9f0bdf503Scgd * 1. Redistributions of source code must retain the above copyright
10f0bdf503Scgd * notice, this list of conditions and the following disclaimer.
11f0bdf503Scgd * 2. Redistributions in binary form must reproduce the above copyright
12f0bdf503Scgd * notice, this list of conditions and the following disclaimer in the
13f0bdf503Scgd * documentation and/or other materials provided with the distribution.
14f0bdf503Scgd * 3. All advertising materials mentioning features or use of this software
15f0bdf503Scgd * must display the following acknowledgement:
16f0bdf503Scgd * This product includes software developed by Christopher G. Demetriou
17f0bdf503Scgd * for the NetBSD Project.
18f0bdf503Scgd * 4. The name of the author may not be used to endorse or promote products
19f0bdf503Scgd * derived from this software without specific prior written permission
20f0bdf503Scgd *
21f0bdf503Scgd * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
22f0bdf503Scgd * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
23f0bdf503Scgd * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
24f0bdf503Scgd * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
25f0bdf503Scgd * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
26f0bdf503Scgd * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27f0bdf503Scgd * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28f0bdf503Scgd * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29f0bdf503Scgd * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
30f0bdf503Scgd * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31f0bdf503Scgd */
32f0bdf503Scgd
33f0bdf503Scgd #include <lib/libsa/stand.h>
34728d6723Sthorpej #include <lib/libkern/libkern.h>
35f0bdf503Scgd
36f0bdf503Scgd #include <machine/prom.h>
37f0bdf503Scgd #include "common.h"
38f0bdf503Scgd
39f0bdf503Scgd long booted_dev_fd;
40f0bdf503Scgd #if defined(PRIMARY_BOOTBLOCK) || defined(UNIFIED_BOOTBLOCK)
41f0bdf503Scgd char booted_dev_name[BOOTED_DEV_MAXNAMELEN];
42f0bdf503Scgd #endif /* defined(PRIMARY_BOOTBLOCK) || defined(UNIFIED_BOOTBLOCK) */
43f0bdf503Scgd
44f0bdf503Scgd #if defined(PRIMARY_BOOTBLOCK) || defined(UNIFIED_BOOTBLOCK)
45f0bdf503Scgd int
booted_dev_open(void)46f0bdf503Scgd booted_dev_open(void)
47f0bdf503Scgd {
48f0bdf503Scgd prom_return_t ret;
49f0bdf503Scgd int devlen;
50f0bdf503Scgd
51f0bdf503Scgd /*
52f0bdf503Scgd * XXX
53f0bdf503Scgd * We don't know what device names look like yet,
54f0bdf503Scgd * so we can't change them.
55f0bdf503Scgd */
56*643b7c4eSflxd devlen = prom_getenv(PROM_E_BOOTED_DEV, booted_dev_name,
57f0bdf503Scgd sizeof(booted_dev_name));
58f0bdf503Scgd
59f0bdf503Scgd ret.bits = prom_open(booted_dev_name, devlen);
60f0bdf503Scgd
61f0bdf503Scgd if (ret.u.status)
62f0bdf503Scgd return 0;
63f0bdf503Scgd booted_dev_fd = ret.u.retval;
64f0bdf503Scgd
65f0bdf503Scgd return 1;
66f0bdf503Scgd }
67f0bdf503Scgd #endif
68