summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/powerpc/include/bootinfo.h128
-rw-r--r--sys/powerpc/include/metadata.h1
2 files changed, 56 insertions, 73 deletions
diff --git a/sys/powerpc/include/bootinfo.h b/sys/powerpc/include/bootinfo.h
index aa967ac..0125465 100644
--- a/sys/powerpc/include/bootinfo.h
+++ b/sys/powerpc/include/bootinfo.h
@@ -1,87 +1,69 @@
/*-
- * Copyright (c) 1994, 1995, 1996 Carnegie-Mellon University.
+ * Copyright (C) 2006-2008 Semihalf, Marian Balakowicz <m8@semihalf.com>
* All rights reserved.
*
- * Author: Chris G. Demetriou
- *
- * Permission to use, copy, modify and distribute this software and
- * its documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- *
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
- * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
- * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
- * Carnegie Mellon requests users of this software to return to
+ * 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. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
*
- * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
- * School of Computer Science
- * Carnegie Mellon University
- * Pittsburgh PA 15213-3890
- *
- * any improvements or extensions that they make and grant Carnegie the
- * rights to redistribute these changes.
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
*
* $FreeBSD$
*/
-/*
- * The boot program passes a pointer (in the boot environment virtual
- * address address space; "BEVA") to a bootinfo to the kernel using
- * the following convention:
- *
- * a0 contains first free page frame number
- * a1 contains page number of current level 1 page table
- * if a2 contains BOOTINFO_MAGIC and a4 is nonzero:
- * a3 contains pointer (BEVA) to bootinfo
- * a4 contains bootinfo version number
- * if a2 contains BOOTINFO_MAGIC and a4 contains 0 (backward compat):
- * a3 contains pointer (BEVA) to bootinfo version
- * (u_long), then the bootinfo
- */
+#ifndef _MACHINE_BOOTINFO_H_
+#define _MACHINE_BOOTINFO_H_
-#define BOOTINFO_MAGIC 0xdeadbeeffeedface
+#if !defined(LOCORE)
-struct bootinfo_v1 {
- u_long ssym; /* 0: start of kernel sym table */
- u_long esym; /* 8: end of kernel sym table */
- char boot_flags[64]; /* 16: boot flags */
- char booted_kernel[64]; /* 80: name of booted kernel */
- void *hwrpb; /* 144: hwrpb pointer (BEVA) */
- u_long hwrpbsize; /* 152: size of hwrpb data */
- int (*cngetc)(void); /* 160: console getc pointer */
- void (*cnputc)(int); /* 168: console putc pointer */
- void (*cnpollc)(int); /* 176: console pollc pointer */
- u_long pad[6]; /* 184: rsvd for future use */
- char *envp; /* 232: start of environment */
- u_long kernend; /* 240: end of kernel */
- u_long modptr; /* 248: FreeBSD module base */
- /* 256: total size */
+/* Platform hardware spec, received from loader(8) */
+
+#define BI_VERSION 1
+
+struct bi_mem_region {
+ vm_paddr_t mem_base;
+ vm_size_t mem_size;
};
-/*
- * Kernel-internal structure used to hold important bits of boot
- * information. NOT to be used by boot blocks.
- *
- * Note that not all of the fields from the bootinfo struct(s)
- * passed by the boot blocks aren't here (because they're not currently
- * used by the kernel!). Fields here which aren't supplied by the
- * bootinfo structure passed by the boot blocks are supposed to be
- * filled in at startup with sane contents.
- */
-struct bootinfo_kernel {
- u_long ssym; /* start of syms */
- u_long esym; /* end of syms */
- u_long modptr; /* FreeBSD module pointer */
- u_long kernend; /* "end of kernel" from boot code */
- char *envp; /* "end of kernel" from boot code */
- u_long hwrpb_phys; /* hwrpb physical address */
- u_long hwrpb_size; /* size of hwrpb data */
- char boot_flags[64]; /* boot flags */
- char booted_kernel[64]; /* name of booted kernel */
- char booted_dev[64]; /* name of booted device */
+struct bi_eth_addr {
+ u_int8_t mac_addr[6];
};
-extern struct bootinfo_kernel bootinfo;
+struct bootinfo {
+ u_int32_t bi_version;
+ vm_offset_t bi_bar_base;
+ u_int32_t bi_cpu_clk;
+ u_int32_t bi_bus_clk;
+ u_int8_t bi_mem_reg_no;
+ u_int8_t bi_eth_addr_no;
+
+ u_int8_t bi_data[1];
+ /*
+ * The bi_data container is allocated in run time and has the
+ * following layout:
+ *
+ * - bi_mem_reg_no elements of struct bi_mem_region
+ * - bi_eth_addr_no elements of struct bi_eth_addr
+ */
+};
+
+extern struct bootinfo *bootinfo;
+#endif
+
+#endif /* _MACHINE_BOOTINFO_H_ */
diff --git a/sys/powerpc/include/metadata.h b/sys/powerpc/include/metadata.h
index 124d46b..12209bc 100644
--- a/sys/powerpc/include/metadata.h
+++ b/sys/powerpc/include/metadata.h
@@ -32,5 +32,6 @@
#define MODINFOMD_ENVP 0x1001
#define MODINFOMD_HOWTO 0x1002
#define MODINFOMD_KERNEND 0x1003
+#define MODINFOMD_BOOTINFO 0x1004
#endif /* !_MACHINE_METADATA_H_ */
OpenPOWER on IntegriCloud