diff options
author | marcel <marcel@FreeBSD.org> | 2008-02-23 18:01:45 +0000 |
---|---|---|
committer | marcel <marcel@FreeBSD.org> | 2008-02-23 18:01:45 +0000 |
commit | 2c03940da71ecf47c9df930f702a6165a027a60c (patch) | |
tree | 8e4321533731741d537e7c7649eed3b1c2f0132e | |
parent | 30c7c35b1480887e4a07caea2b7f618c203a97ea (diff) | |
download | FreeBSD-src-2c03940da71ecf47c9df930f702a6165a027a60c.zip FreeBSD-src-2c03940da71ecf47c9df930f702a6165a027a60c.tar.gz |
Define the bootinfo structure for FreeBSD. It is not used on
AIM, but it's used for BookE.
-rw-r--r-- | sys/powerpc/include/bootinfo.h | 128 | ||||
-rw-r--r-- | sys/powerpc/include/metadata.h | 1 |
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_ */ |