I'm proposing an extension framework for the bootinfo structure used to pass information from the bootstrap/loader to the kernel. Although I'm only proposing this for the MIPS bootinfo, it's completely applicable to any of them.
What I propose is adding an optional platform extension structure: bootinfo_pext, surrounded by #ifdef BOOTINFO_PEXT struct bootinfo { .... u_int32_t bi_kernend; /* end of kernel space */ u_int32_t bi_envp; /* environment */ u_int32_t bi_modulep; /* preloaded modules */ +#ifdef BOOTINFO_PEXT + struct bootinfo_pext bi_pext; /* platform extensions if defined */ +#endif }; Then, any vendor, platform, architecture, family, or developer could define a new header file (or expand an existing one) with a definition of struct bootinfo_pext, and a #define BOOTINFO_PEXT. Include the new (or existing) header file in your source, and you have whatever extensions you want, without affecting other platforms, architectures, families, or developers. The file we're looking to add is sys/mips/cavium/bootinfo_octeon.h: +/* + * Platform bootinfo extensions for OCTEON bootinfo structure + * + * Specific vendors can add their own bootinfo_pext structures + * surrounded by #ifdef OCTEON_VENDOR_XXX + */ + +#include "opt_cvmx.h" /* For OCTEON_VENDOR_XXX definitions */ + +#ifdef OCTEON_VENDOR_JUNIPER +#define BOOTINFO_PEXT /* include bootinfo_pext in main structure */ +#define BOOTINFO_PEXT_MAGIC 0xCADECADE +#define BOOTINFO_PEXT_VERSION 1 + +struct bootinfo_pext { + int pext_i2cid; + u_int32_t pext_flags; + u_int32_t pext_magic; /* Magic number for octeon pext */ + u_int32_t pext_version; /* Version of pext */ + u_int16_t pext_uboot_major_rev; + u_int16_t pext_uboot_minor_rev; + u_int16_t pext_loader_major_rev; + u_int16_t pext_loader_minor_rev; +}; +#endif /* OCTEON_VENDOR_JUNIPER */ Reasonable? Unreasonable? Insane? -- Andrew Duane Juniper Networks 978-589-0551 10 Technology Park Dr adu...@juniper.net Westford, MA 01886-3418 _______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"