diff -ruN ../contrib/ref/hurd-l4/libl4/l4/bootinfo.h libl4/l4/bootinfo.h --- ../contrib/ref/hurd-l4/libl4/l4/bootinfo.h 1970-01-01 01:00:00.000000000 +0100 +++ libl4/l4/bootinfo.h 2005-02-17 12:03:01.000000000 +0100 @@ -0,0 +1,199 @@ +/* l4/bootinfo.h - Public interface to the L4 bootinfo structures. + Copyright (C) 2005 Free Software Foundation, Inc. + Written by Matthieu Lemerre . + + This file is part of the GNU L4 library. + + The GNU L4 library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation; either version 2.1 of + the License, or (at your option) any later version. + + The GNU L4 library is distributed in the hope that it will be + useful, but WITHOUT ANY WARRANTY; without even the implied warranty + of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU L4 library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. */ + +#ifndef _L4_BOOTINFO_H +#define _L4_BOOTINFO_H 1 + +#include +#include + +#define _L4_BOOTINFO_MAGIC 0x14b0021d +#define _L4_BOOTINFO_VERSION 1 + + +/* + * Implemented types + */ +#define _L4_BOOTINFO_MULTIBOOT 0x0102 +#define _L4_BOOTINFO_MODULE 0x0001 + + +/* + * Generic BootInfo structures + */ + +struct _L4_generic_bootinfo +{ + _L4_word_t magic; + _L4_word_t version; + _L4_word_t size; + _L4_word_t first_entry; + _L4_word_t num_entries; + _L4_word_t padded[3]; +}; + +typedef struct _L4_generic_bootinfo *_L4_generic_bootinfo_t; + +struct _L4_generic_boot_rec +{ + _L4_word_t type; + _L4_word_t version; + _L4_word_t offset_next; +}; + +typedef struct _L4_generic_boot_rec *_L4_generic_boot_rec_t; + +static inline _L4_word_t +_L4_attribute_always_inline +_L4_generic_bootinfo_valid (_L4_generic_bootinfo_t bootinfo) +{ + return (bootinfo->magic == _L4_BOOTINFO_MAGIC + && bootinfo->version == _L4_BOOTINFO_VERSION); +} + +static inline _L4_word_t +_L4_attribute_always_inline +_L4_generic_bootinfo_size (_L4_generic_bootinfo_t bootinfo) +{ + return bootinfo->size; +} + +static inline _L4_generic_boot_rec_t +_L4_attribute_always_inline +_L4_generic_bootinfo_first_entry (_L4_generic_bootinfo_t bootinfo) +{ + return (_L4_generic_boot_rec_t) (((_L4_word_t) bootinfo) + bootinfo->first_entry); +} + +static inline _L4_word_t +_L4_attribute_always_inline +_L4_generic_bootinfo_entries (_L4_generic_bootinfo_t bootinfo) +{ + return bootinfo->num_entries; +} + +static inline _L4_word_t +_L4_attribute_always_inline +_L4_generic_boot_rec_type (_L4_generic_boot_rec_t boot_rec) +{ + return boot_rec->type; +} + +static inline _L4_generic_boot_rec_t +_L4_attribute_always_inline +_L4_generic_boot_rec_next (_L4_generic_boot_rec_t boot_rec) +{ + return (_L4_generic_boot_rec_t) (((_L4_word_t) boot_rec) + boot_rec->offset_next); +} + + +/* + * Bootinfo type: Multiboot info (type 0x0102) + * Delivers location of the first byte of the mutiboot structure + */ + +struct _L4_generic_bootinfo_MBI +{ + _L4_word_t type; + _L4_word_t version; + _L4_word_t offset_next; + _L4_word_t address; +}; + +typedef struct _L4_generic_bootinfo_MBI *_L4_generic_bootinfo_MBI_t; + +static inline _L4_word_t +_L4_attribute_always_inline +_L4_MBI_address (_L4_generic_bootinfo_MBI_t mbi) +{ + return mbi->address; +} + +static inline _L4_word_t +_L4_attribute_always_inline +_L4_MBI_address_from_bootinfo (_L4_generic_bootinfo_t bi) +{ + _L4_generic_boot_rec_t boot_rec; + int num_entries = (int) bi->num_entries; + for (boot_rec = (_L4_generic_boot_rec_t) _L4_generic_bootinfo_first_entry (bi); + boot_rec->type != _L4_BOOTINFO_MULTIBOOT && num_entries-- > 0; + boot_rec += boot_rec->offset_next); + if (!num_entries) + return 0; + return _L4_MBI_address ((_L4_generic_bootinfo_MBI_t) boot_rec); +} + + + +/* + * Module Type (type 0x0001) + * Binary file inserted in the memory by the bootloader + */ + +struct _L4_generic_bootinfo_module +{ + _L4_word_t type; + _L4_word_t version; + _L4_word_t offset_next; + _L4_word_t start; + _L4_word_t size; + _L4_word_t cmdline_offset; +}; + +typedef struct _L4_generic_bootinfo_module *_L4_generic_bootinfo_module_t; + +static inline _L4_word_t +_L4_attribute_always_inline +_L4_module_start (_L4_generic_bootinfo_module_t mod) +{ + return mod->start; +} + +static inline _L4_word_t +_L4_attribute_always_inline +_L4_module_size (_L4_generic_bootinfo_module_t mod) +{ + return mod->size; +} + +static inline _L4_word_t +_L4_attribute_always_inline +_L4_module_cmdline_offset (_L4_generic_bootinfo_module_t mod) +{ + return mod->cmdline_offset; +} + + +static inline _L4_word_t +_L4_attribute_always_inline +_L4_module_cmdline (_L4_generic_bootinfo_module_t mod) +{ + return ((l4_word_t) mod + mod->cmdline_offset); +} + + + +#ifdef _L4_INTERFACE_GNU +#include +#endif + +#endif /* l4/bootinfo.h */ + diff -ruN ../contrib/ref/hurd-l4/libl4/l4/gnu/bootinfo.h libl4/l4/gnu/bootinfo.h --- ../contrib/ref/hurd-l4/libl4/l4/gnu/bootinfo.h 1970-01-01 01:00:00.000000000 +0100 +++ libl4/l4/gnu/bootinfo.h 2005-02-17 12:03:09.000000000 +0100 @@ -0,0 +1,126 @@ +/* l4/bootinfo.h - Public GNU interface to the L4 bootinfo structures. + Copyright (C) 2005 Free Software Foundation, Inc. + Written by Alexandre Buisse . + + This file is part of the GNU L4 library. + + The GNU L4 library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation; either version 2.1 of + the License, or (at your option) any later version. + + The GNU L4 library is distributed in the hope that it will be + useful, but WITHOUT ANY WARRANTY; without even the implied warranty + of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU L4 library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. */ + + +#ifndef _L4_BOOTINFO_H +# error "Never use directly; include instead." +#endif + +typedef struct _L4_generic_bootinfo l4_generic_bootinfo; + +typedef _L4_generic_bootinfo_t l4_generic_bootinfo_t; + +typedef struct _L4_generic_boot_rec l4_generic_boot_rec; + +typedef _L4_generic_boot_rec_t l4_generic_boot_rec_t; + +static inline l4_word_t +_L4_attribute_always_inline +l4_generic_bootinfo_valid (l4_generic_bootinfo_t bootinfo) +{ + return _L4_generic_bootinfo_valid (bootinfo); +} + +static inline l4_word_t +_L4_attribute_always_inline +l4_generic_bootinfo_size (l4_generic_bootinfo_t bootinfo) +{ + return _L4_generic_bootinfo_size (bootinfo); +} + +static inline l4_generic_boot_rec_t +_L4_attribute_always_inline +l4_generic_bootinfo_first_entry (l4_generic_bootinfo_t bootinfo) +{ + return _L4_generic_bootinfo_first_entry (bootinfo); +} + +static inline l4_word_t +_L4_attribute_always_inline +l4_generic_bootinfo_entries (l4_generic_bootinfo_t bootinfo) +{ + return _L4_generic_bootinfo_entries (bootinfo); +} + +static inline l4_word_t +_L4_attribute_always_inline +l4_generic_boot_rec_type (l4_generic_boot_rec_t boot_rec) +{ + return _L4_generic_boot_rec_type (boot_rec); +} + +static inline l4_generic_boot_rec_t +_L4_attribute_always_inline +l4_generic_boot_rec_next (l4_generic_boot_rec_t boot_rec) +{ + return _L4_generic_boot_rec_next (boot_rec); +} + +typedef struct _L4_generic_bootinfo_MBI l4_generic_bootinfo_MBI; + +typedef _L4_generic_bootinfo_MBI_t l4_generic_bootinfo_MBI_t; + +static inline l4_word_t +_L4_attribute_always_inline +l4_MBI_address (l4_generic_bootinfo_MBI_t mbi) +{ + return _L4_MBI_address (mbi); +} + +static inline l4_word_t +_L4_attribute_always_inline +l4_MBI_address_from_bootinfo (l4_generic_bootinfo_t bootinfo) +{ + return _L4_MBI_address_from_bootinfo (bootinfo); +} + + +typedef struct _L4_generic_bootinfo_module l4_generic_bootinfo_module; + +typedef _L4_generic_bootinfo_module_t l4_generic_bootinfo_module_t; + +static inline l4_word_t +_L4_attribute_always_inline +l4_module_start (l4_generic_bootinfo_module_t mod) +{ + return _L4_module_start (mod); +} + +static inline l4_word_t +_L4_attribute_always_inline +l4_module_size (l4_generic_bootinfo_module_t mod) +{ + return _L4_module_size (mod); +} + +static inline l4_word_t +_L4_attribute_always_inline +l4_module_cmdline_offset (l4_generic_bootinfo_module_t mod) +{ + return _L4_module_cmdline_offset (mod); +} + +static inline l4_word_t +_L4_attribute_always_inline +l4_module_cmdline(l4_generic_bootinfo_module_t mod) +{ + return _L4_module_cmdline (mod); +} diff -ruN ../contrib/ref/hurd-l4/libl4/l4.h libl4/l4.h --- ../contrib/ref/hurd-l4/libl4/l4.h 2005-02-14 16:32:34.000000000 +0100 +++ libl4/l4.h 2005-02-17 11:59:00.000000000 +0100 @@ -31,5 +31,6 @@ #include #include #include +#include #endif /* l4.h */