From owner-p4-projects@FreeBSD.ORG Sat Mar 30 20:59:51 2013 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 080F1689; Sat, 30 Mar 2013 20:59:51 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 83558687 for ; Sat, 30 Mar 2013 20:59:50 +0000 (UTC) (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [IPv6:2001:1900:2254:2068::682:0]) by mx1.freebsd.org (Postfix) with ESMTP id 66254C29 for ; Sat, 30 Mar 2013 20:59:50 +0000 (UTC) Received: from skunkworks.freebsd.org ([127.0.1.74]) by skunkworks.freebsd.org (8.14.6/8.14.6) with ESMTP id r2UKxni9026036 for ; Sat, 30 Mar 2013 20:59:49 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.6/8.14.6/Submit) id r2UKxnBU026033 for perforce@freebsd.org; Sat, 30 Mar 2013 20:59:49 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Date: Sat, 30 Mar 2013 20:59:49 GMT Message-Id: <201303302059.r2UKxnBU026033@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to bb+lists.freebsd.perforce@cyrus.watson.org using -f From: Robert Watson Subject: PERFORCE change 227250 for review To: Perforce Change Reviews Precedence: bulk X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.14 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Mar 2013 20:59:51 -0000 http://p4web.freebsd.org/@@227250?ac=10 Change 227250 by rwatson@rwatson_zenith_cl_cam_ac_uk on 2013/03/30 20:59:20 Cleanup of MIPS bootinfo.h -- make it 64-bit friendly, remove unused definitions, especially those possible copied and pasted from the FreeBSD 6.2 x86 interface to loader (and now long-since garbage-collected). Add fields such as a DTB pointer for use with FDT, boot options, and a physical memory size field to be used in systems without FDT. Affected files ... .. //depot/projects/ctsrd/beribsd/src/sys/mips/include/bootinfo.h#3 edit Differences ... ==== //depot/projects/ctsrd/beribsd/src/sys/mips/include/bootinfo.h#3 (text+ko) ==== @@ -1,4 +1,5 @@ /*- + * Copyright (c) 2013 Robert N. M. Watson * Copyright (C) 1994 by Rodney W. Grimes, Milwaukie, Oregon 97222 * All rights reserved. * @@ -36,33 +37,15 @@ #define _MACHINE_BOOTINFO_H_ /* Only change the version number if you break compatibility. */ -#define BOOTINFO_VERSION 1 +#define BOOTINFO_VERSION 2 -#define N_BIOS_GEOM 8 - #define MIPS_BOOTINFO_MAGIC 0xCDEACDEA -/* Extended OLV bootinfo struct. The data area includes a list of named - OIDs and associated data values. The format is: - - NUL-terminated dotted-string name - 2 byte length, in big-endian order - LENGTH bytes of data - [...] - - The two magic fields are used to guard against other bootloaders that - may place other sorts of data here. */ - -struct bootinfo_ext { -#define BOOTINFO_EXT_MAGIC1 0x55aa00ff - unsigned int magic1; - unsigned char *data; - unsigned int size; -#define BOOTINFO_EXT_MAGIC2 0x32719187 - unsigned int magic2; -}; - -#define BOOTINFO_EXT_MAX_SIZE 16384 +#if defined(__mips_n32) || defined(__mips_n64) +typedef uint64_t bi_ptr_t; +#else +typedef uint32_t bi_ptr_t; +#endif /* * A zero bootinfo field often means that there is no info available. @@ -70,73 +53,28 @@ * normal value. */ struct bootinfo { - u_int32_t bi_version; - u_int32_t bi_kernelname; /* represents a char * */ - u_int32_t bi_nfs_diskless; /* struct nfs_diskless * */ - /* End of fields that are always present. */ -#define bi_endcommon bi_n_bios_used - u_int32_t bi_n_bios_used; - u_int32_t bi_bios_geom[N_BIOS_GEOM]; - u_int32_t bi_size; - u_int8_t bi_memsizes_valid; - u_int8_t bi_bios_dev; /* bootdev BIOS unit number */ - u_int8_t bi_pad[2]; - u_int32_t bi_basemem; - u_int32_t bi_extmem; - u_int32_t bi_symtab; /* struct symtab * */ - u_int32_t bi_esymtab; /* struct symtab * */ - /* Items below only from advanced bootloader */ - u_int32_t bi_kernend; /* end of kernel space */ - u_int32_t bi_envp; /* environment */ - u_int32_t bi_modulep; /* preloaded modules */ + /* bootinfo meta-data. */ + uint32_t bi_version; + uint32_t bi_size; + uint32_t bi_bootopts; + uint32_t _bi_pad0; + + /* bootinfo contents. */ + bi_ptr_t bi_kernelname; /* Pointer to name. */ + bi_ptr_t bi_nfs_diskless;/* Pointer to NFS data. */ + bi_ptr_t bi_dtb; /* Pointer to dtb. */ + bi_ptr_t bi_physmem; /* Physical memory size in bytes. */ + + /* Kernel bits. */ + bi_ptr_t bi_symtab; /* Symbol table... */ + bi_ptr_t bi_esymtab; /* ... */ + bi_ptr_t bi_kernend; /* End of kernel address space. */ + bi_ptr_t bi_envp; /* Kernel environment. */ + bi_ptr_t bi_modulep; /* Preloaded modules. */ }; #ifdef _KERNEL extern struct bootinfo bootinfo; #endif -/* - * Constants for converting boot-style device number to type, - * adaptor (uba, mba, etc), unit number and partition number. - * Type (== major device number) is in the low byte - * for backward compatibility. Except for that of the "magic - * number", each mask applies to the shifted value. - * Format: - * (4) (4) (4) (4) (8) (8) - * -------------------------------- - * |MA | AD| CT| UN| PART | TYPE | - * -------------------------------- - */ -#define B_ADAPTORSHIFT 24 -#define B_ADAPTORMASK 0x0f -#define B_ADAPTOR(val) (((val) >> B_ADAPTORSHIFT) & B_ADAPTORMASK) -#define B_CONTROLLERSHIFT 20 -#define B_CONTROLLERMASK 0xf -#define B_CONTROLLER(val) (((val)>>B_CONTROLLERSHIFT) & B_CONTROLLERMASK) -#define B_SLICESHIFT 20 -#define B_SLICEMASK 0xff -#define B_SLICE(val) (((val)>>B_SLICESHIFT) & B_SLICEMASK) -#define B_UNITSHIFT 16 -#define B_UNITMASK 0xf -#define B_UNIT(val) (((val) >> B_UNITSHIFT) & B_UNITMASK) -#define B_PARTITIONSHIFT 8 -#define B_PARTITIONMASK 0xff -#define B_PARTITION(val) (((val) >> B_PARTITIONSHIFT) & B_PARTITIONMASK) -#define B_TYPESHIFT 0 -#define B_TYPEMASK 0xff -#define B_TYPE(val) (((val) >> B_TYPESHIFT) & B_TYPEMASK) - -#define B_MAGICMASK 0xf0000000 -#define B_DEVMAGIC 0xa0000000 - -#define MAKEBOOTDEV(type, adaptor, controller, unit, partition) \ - (((type) << B_TYPESHIFT) | ((adaptor) << B_ADAPTORSHIFT) | \ - ((controller) << B_CONTROLLERSHIFT) | ((unit) << B_UNITSHIFT) | \ - ((partition) << B_PARTITIONSHIFT) | B_DEVMAGIC) - -#define BASE_SLICE 2 -#define COMPATIBILITY_SLICE 0 -#define MAX_SLICES 32 -#define WHOLE_DISK_SLICE 1 - #endif /* !_MACHINE_BOOTINFO_H_ */