Patrick Georgi (patrick@georgi-clan.de) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/197
-gerrit
commit ed521a9675301224fbc6e27dd4ce3d85e9370d14 Author: Mathias Krause mathias.krause@secunet.com Date: Tue Jun 7 13:53:31 2011 +0200
Add multiboot header
Change-Id: Ibe8e879a3a6f533f97aa8381697afb1f14d1f87d Signed-off-by: Mathias Krause mathias.krause@secunet.com Signed-off-by: Patrick Georgi patrick.georgi@secunet.com --- Config.in | 7 +++++++ i386/ldscript | 2 +- main/Makefile.inc | 1 + main/mb_hdr.c | 32 ++++++++++++++++++++++++++++++++ 4 files changed, 41 insertions(+), 1 deletions(-)
diff --git a/Config.in b/Config.in index 8981a48..a8cbfbb 100644 --- a/Config.in +++ b/Config.in @@ -9,6 +9,13 @@ config TARGET_I386 bool default y
+config MULTIBOOT_IMAGE + bool "Include a MultiBoot header" + default y + help + Including a MultiBoot header makes FILO chainloadable by MultiBoot + compliant boot loaders like GRUB. + menu "Interface Options"
config USE_GRUB diff --git a/i386/ldscript b/i386/ldscript index 7fba856..b260c51 100644 --- a/i386/ldscript +++ b/i386/ldscript @@ -40,7 +40,7 @@ SECTIONS /* Start of the program. * Now the version string is in the note, we must include it * in the program. Otherwise we lose the string after relocation. */ - . = ALIGN(16); + . = ALIGN(4096); _start = .;
/* Putting ELF notes near beginning of file might help bootloaders. diff --git a/main/Makefile.inc b/main/Makefile.inc index c7290cf..e2fab04 100644 --- a/main/Makefile.inc +++ b/main/Makefile.inc @@ -16,6 +16,7 @@ # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. #
+TARGETS-$(CONFIG_MULTIBOOT_IMAGE) += main/mb_hdr.o TARGETS-y += main/filo.o main/strtox.o TARGETS-y += main/elfload.o main/ipchecksum.o TARGETS-$(CONFIG_SUPPORT_SOUND) += main/sound.o diff --git a/main/mb_hdr.c b/main/mb_hdr.c new file mode 100644 index 0000000..bb01427 --- /dev/null +++ b/main/mb_hdr.c @@ -0,0 +1,32 @@ +/* + * This file is part of FILO. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* Support for MultiBoot */ +#define MB_HEADER_MAGIC 0x1BADB002 +#define MB_RQ_FLAGS_4K 1 +#define MB_REQUESTED_FLAGS (MB_RQ_FLAGS_4K) + +/* this header is parsed by the boot loader that loads FILO, e.g. GRUB */ +struct mb_header { + long magic; /* multiboot magic */ + long features; /* requested features */ + long chksum; /* chksum for whole structure */ +} mb_header __attribute__((section(".hdr.mb"))) = { + .magic = MB_HEADER_MAGIC, + .features = MB_REQUESTED_FLAGS, + .chksum = -(MB_HEADER_MAGIC + MB_REQUESTED_FLAGS), +};