Patrick Georgi ([email protected]) just uploaded a new patch set to 
gerrit, which you can find at http://review.coreboot.org/197

-gerrit

commit ed521a9675301224fbc6e27dd4ce3d85e9370d14
Author: Mathias Krause <[email protected]>
Date:   Tue Jun 7 13:53:31 2011 +0200

    Add multiboot header
    
    Change-Id: Ibe8e879a3a6f533f97aa8381697afb1f14d1f87d
    Signed-off-by: Mathias Krause <[email protected]>
    Signed-off-by: Patrick Georgi <[email protected]>
---
 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),
+};

-- 
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to