]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
Split coreboot and multiboot ports.
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sat, 1 May 2010 12:06:53 +0000 (14:06 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sat, 1 May 2010 12:06:53 +0000 (14:06 +0200)
* conf/i386-multiboot.rmk: New file.
* configure.ac: Add multiboot port.
* include/grub/i386/multiboot/boot.h: New file.
* include/grub/i386/multiboot/console.h: Likewise.
* include/grub/i386/multiboot/init.h: Likewise.
* include/grub/i386/multiboot/kernel.h: Likewise.
* include/grub/i386/multiboot/loader.h: Likewise.
* include/grub/i386/multiboot/memory.h: Likewise.
* include/grub/i386/multiboot/serial.h: Likewise.
* include/grub/i386/multiboot/time.h: Likewise.
* include/grub/multiboot.h: Add GRUB_MACHINE_MULTIBOOT to ifdef.
* loader/multiboot.c: Likewise.
* loader/multiboot_mbi2.c: Likewise.
* util/grub-mkrescue.in: Generate multiboot rescue.

15 files changed:
ChangeLog
conf/i386-multiboot.rmk [new file with mode: 0644]
configure.ac
include/grub/i386/multiboot/boot.h [new file with mode: 0644]
include/grub/i386/multiboot/console.h [new file with mode: 0644]
include/grub/i386/multiboot/init.h [new file with mode: 0644]
include/grub/i386/multiboot/kernel.h [new file with mode: 0644]
include/grub/i386/multiboot/loader.h [new file with mode: 0644]
include/grub/i386/multiboot/memory.h [new file with mode: 0644]
include/grub/i386/multiboot/serial.h [new file with mode: 0644]
include/grub/i386/multiboot/time.h [new file with mode: 0644]
include/grub/multiboot.h
loader/multiboot.c
loader/multiboot_mbi2.c
util/grub-mkrescue.in

index 1b53d24f58f9dd698894008053b9fe9fd4bb7f57..43f2231137cee88399d2da5422be781b7fb95336 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,22 @@
+2010-05-01  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       Split coreboot and multiboot ports.
+
+       * conf/i386-multiboot.rmk: New file.
+       * configure.ac: Add multiboot port.
+       * include/grub/i386/multiboot/boot.h: New file.
+       * include/grub/i386/multiboot/console.h: Likewise.
+       * include/grub/i386/multiboot/init.h: Likewise.
+       * include/grub/i386/multiboot/kernel.h: Likewise.
+       * include/grub/i386/multiboot/loader.h: Likewise.
+       * include/grub/i386/multiboot/memory.h: Likewise.
+       * include/grub/i386/multiboot/serial.h: Likewise.
+       * include/grub/i386/multiboot/time.h: Likewise.
+       * include/grub/multiboot.h: Add GRUB_MACHINE_MULTIBOOT to ifdef.
+       * loader/multiboot.c: Likewise.
+       * loader/multiboot_mbi2.c: Likewise.
+       * util/grub-mkrescue.in: Generate multiboot rescue.
+
 2010-05-01  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * kern/parser.c (grub_parser_execute): Cope with read-only config.
diff --git a/conf/i386-multiboot.rmk b/conf/i386-multiboot.rmk
new file mode 100644 (file)
index 0000000..69b8e9a
--- /dev/null
@@ -0,0 +1,74 @@
+# -*- makefile -*-
+
+COMMON_CFLAGS = -mrtd -mregparm=3 
+
+# Images.
+
+GRUB_KERNEL_MACHINE_LINK_ADDR  = 0x8200
+
+pkglib_PROGRAMS += kernel.img
+kernel_img_SOURCES = kern/i386/coreboot/startup.S \
+       kern/i386/misc.S \
+       kern/i386/coreboot/init.c \
+       kern/i386/multiboot_mmap.c \
+       kern/i386/halt.c \
+       kern/main.c kern/device.c \
+       kern/disk.c kern/dl.c kern/file.c kern/fs.c kern/err.c \
+       kern/misc.c kern/mm.c kern/term.c \
+       kern/rescue_parser.c kern/rescue_reader.c \
+       kern/time.c kern/list.c kern/handler.c kern/command.c kern/corecmd.c \
+       kern/$(target_cpu)/dl.c kern/parser.c kern/partition.c \
+       kern/i386/tsc.c kern/i386/pit.c \
+       kern/generic/rtc_get_time_ms.c \
+       kern/generic/millisleep.c \
+       kern/env.c \
+       term/i386/pc/vga_text.c term/i386/vga_common.c \
+       symlist.c
+kernel_img_CFLAGS = $(COMMON_CFLAGS)
+kernel_img_ASFLAGS = $(COMMON_ASFLAGS)
+kernel_img_LDFLAGS += $(COMMON_LDFLAGS) -Wl,-N,-S,-Ttext,$(GRUB_KERNEL_MACHINE_LINK_ADDR),-Bstatic
+
+sbin_SCRIPTS += grub-install
+grub_install_SOURCES = util/grub-install.in
+
+bin_SCRIPTS += grub-mkrescue
+grub_mkrescue_SOURCES = util/grub-mkrescue.in
+
+# Modules.
+pkglib_MODULES = linux.mod aout.mod halt.mod datetime.mod mmap.mod
+
+# For mmap.mod.
+mmap_mod_SOURCES = mmap/mmap.c mmap/i386/uppermem.c mmap/i386/mmap.c
+mmap_mod_CFLAGS = $(COMMON_CFLAGS)
+mmap_mod_LDFLAGS = $(COMMON_LDFLAGS)
+mmap_mod_ASFLAGS = $(COMMON_ASFLAGS)
+
+# For linux.mod.
+linux_mod_SOURCES = loader/i386/linux.c
+linux_mod_CFLAGS = $(COMMON_CFLAGS)
+linux_mod_LDFLAGS = $(COMMON_LDFLAGS)
+
+# For halt.mod.
+halt_mod_SOURCES = commands/halt.c
+halt_mod_CFLAGS = $(COMMON_CFLAGS)
+halt_mod_LDFLAGS = $(COMMON_LDFLAGS)
+
+# For aout.mod.
+aout_mod_SOURCES = loader/aout.c
+aout_mod_CFLAGS = $(COMMON_CFLAGS)
+aout_mod_LDFLAGS = $(COMMON_LDFLAGS)
+
+# For bsd.mod
+pkglib_MODULES += bsd.mod
+bsd_mod_SOURCES = loader/i386/bsd.c loader/i386/bsd32.c loader/i386/bsd64.c loader/i386/bsd_helper.S loader/i386/bsd_trampoline.S
+bsd_mod_CFLAGS = $(COMMON_CFLAGS)
+bsd_mod_LDFLAGS = $(COMMON_LDFLAGS)
+bsd_mod_ASFLAGS = $(COMMON_ASFLAGS)
+
+# For datetime.mod
+datetime_mod_SOURCES = lib/cmos_datetime.c
+datetime_mod_CFLAGS = $(COMMON_CFLAGS)
+datetime_mod_LDFLAGS = $(COMMON_LDFLAGS)
+
+include $(srcdir)/conf/i386.mk
+include $(srcdir)/conf/common.mk
index 4bfc5a2b034274348b4f44d5065e12d51da3e452..4e1dd41d88ef40b22897ad1d6eaa09c173cc9fa1 100644 (file)
@@ -102,6 +102,7 @@ case "$target_cpu"-"$platform" in
   i386-efi) ;;
   x86_64-efi) ;;
   i386-pc) ;;
+  i386-multiboot) ;;
   i386-coreboot) ;;
   i386-linuxbios) platform=coreboot ;;
   i386-ieee1275) ;;
@@ -136,6 +137,7 @@ esac
 
 case "$platform" in
   coreboot)    machine_CFLAGS="-DGRUB_MACHINE_COREBOOT=1" ;;
+  multiboot)   machine_CFLAGS="-DGRUB_MACHINE_MULTIBOOT=1" ;;
   efi)         machine_CFLAGS="-DGRUB_MACHINE_EFI=1" ;;
   ieee1275)    machine_CFLAGS="-DGRUB_MACHINE_IEEE1275=1" ;;
   qemu)                machine_CFLAGS="-DGRUB_MACHINE_QEMU=1" ;;
diff --git a/include/grub/i386/multiboot/boot.h b/include/grub/i386/multiboot/boot.h
new file mode 100644 (file)
index 0000000..c33f9ba
--- /dev/null
@@ -0,0 +1 @@
+#include <grub/i386/coreboot/boot.h>
diff --git a/include/grub/i386/multiboot/console.h b/include/grub/i386/multiboot/console.h
new file mode 100644 (file)
index 0000000..774399a
--- /dev/null
@@ -0,0 +1 @@
+#include <grub/i386/coreboot/console.h>
diff --git a/include/grub/i386/multiboot/init.h b/include/grub/i386/multiboot/init.h
new file mode 100644 (file)
index 0000000..fd935c3
--- /dev/null
@@ -0,0 +1 @@
+#include <grub/i386/coreboot/init.h>
diff --git a/include/grub/i386/multiboot/kernel.h b/include/grub/i386/multiboot/kernel.h
new file mode 100644 (file)
index 0000000..b41e86e
--- /dev/null
@@ -0,0 +1 @@
+#include <grub/i386/coreboot/kernel.h>
diff --git a/include/grub/i386/multiboot/loader.h b/include/grub/i386/multiboot/loader.h
new file mode 100644 (file)
index 0000000..1c725be
--- /dev/null
@@ -0,0 +1 @@
+#include <grub/i386/coreboot/loader.h>
diff --git a/include/grub/i386/multiboot/memory.h b/include/grub/i386/multiboot/memory.h
new file mode 100644 (file)
index 0000000..8dd6f7c
--- /dev/null
@@ -0,0 +1 @@
+#include <grub/i386/coreboot/memory.h>
diff --git a/include/grub/i386/multiboot/serial.h b/include/grub/i386/multiboot/serial.h
new file mode 100644 (file)
index 0000000..2d85634
--- /dev/null
@@ -0,0 +1 @@
+#include <grub/i386/coreboot/serial.h>
diff --git a/include/grub/i386/multiboot/time.h b/include/grub/i386/multiboot/time.h
new file mode 100644 (file)
index 0000000..7177c74
--- /dev/null
@@ -0,0 +1 @@
+#include <grub/i386/coreboot/time.h>
index 49d71fa09389b11597b946c89bd9c9cd92efaa2b..63947d1bca937cb274731e77fc63aac33d508b54 100644 (file)
@@ -49,7 +49,7 @@ void grub_multiboot_set_bootdev (void);
 grub_uint32_t grub_get_multiboot_mmap_count (void);
 grub_err_t grub_multiboot_set_video_mode (void);
 
-#if defined (GRUB_MACHINE_PCBIOS) || defined (GRUB_MACHINE_COREBOOT) || defined (GRUB_MACHINE_QEMU)
+#if defined (GRUB_MACHINE_PCBIOS) || defined (GRUB_MACHINE_COREBOOT) || defined (GRUB_MACHINE_MULTIBOOT) || defined (GRUB_MACHINE_QEMU)
 #include <grub/i386/pc/vbe.h>
 #define GRUB_MACHINE_HAS_VGA_TEXT 1
 #else
index ce1e75dda4eca060e287f8be3ac70d1a04e3ec96..592289c456f342d9cde15df97f32d206658dea93 100644 (file)
@@ -50,7 +50,7 @@
 #include <grub/efi/efi.h>
 #endif
 
-#if defined (GRUB_MACHINE_PCBIOS) || defined (GRUB_MACHINE_COREBOOT) || defined (GRUB_MACHINE_QEMU)
+#if defined (GRUB_MACHINE_PCBIOS) || defined (GRUB_MACHINE_MULTIBOOT) || defined (GRUB_MACHINE_COREBOOT) || defined (GRUB_MACHINE_QEMU)
 #define DEFAULT_VIDEO_MODE "text"
 #else
 #define DEFAULT_VIDEO_MODE "auto"
index 8b67f9383a25a90573ddb680d46efe490f43d02d..7e9cebe493909b1a66b8b00fe39d0f4da0eb60c4 100644 (file)
@@ -32,7 +32,7 @@
 #include <grub/env.h>
 #include <grub/video.h>
 
-#if defined (GRUB_MACHINE_PCBIOS) || defined (GRUB_MACHINE_COREBOOT) || defined (GRUB_MACHINE_QEMU)
+#if defined (GRUB_MACHINE_PCBIOS) || defined (GRUB_MACHINE_COREBOOT) || defined (GRUB_MACHINE_MULTIBOOT) || defined (GRUB_MACHINE_QEMU)
 #include <grub/i386/pc/vbe.h>
 #define HAS_VGA_TEXT 1
 #else
index aafdfb059694932a4ce4ea12c4f697d2e41b6b23..44e80b106fcd7794ca46e4e4c648413bb7c03ab3 100644 (file)
@@ -30,7 +30,7 @@ target_cpu=@target_cpu@
 native_platform=@platform@
 pkglib_DATA="@pkglib_DATA@"
 
-coreboot_dir=${libdir}/$(echo ${PACKAGE_TARNAME} | sed ${transform})/${target_cpu}-coreboot
+multiboot_dir=${libdir}/$(echo ${PACKAGE_TARNAME} | sed ${transform})/${target_cpu}-multiboot
 pc_dir=${libdir}/$(echo ${PACKAGE_TARNAME} | sed ${transform})/${target_cpu}-pc
 
 # Usage: usage
@@ -122,45 +122,45 @@ process_input_dir ()
 }
 
 if [ "${override_dir}" = "" ] ; then
-    if test -e "${coreboot_dir}" ; then
-        process_input_dir ${coreboot_dir} coreboot
+    if test -e "${multiboot_dir}" ; then
+        process_input_dir ${multiboot_dir} multiboot
     fi
     if test -e "${pc_dir}" ; then
         process_input_dir ${pc_dir} pc
     fi
 else
     process_input_dir ${override_dir} ${native_platform}
-    coreboot_dir=
+    multiboot_dir=
     pc_dir=
     case "${native_platform}" in
-        coreboot) coreboot_dir=${override_dir} ;;
+        multiboot) multiboot_dir=${override_dir} ;;
         pc) pc_dir=${override_dir} ;;
     esac
 fi
 
-# build coreboot core.img
-if test -e "${coreboot_dir}" ; then
-    echo "Enabling coreboot support ..."
+# build multiboot core.img
+if test -e "${multiboot_dir}" ; then
+    echo "Enabling multiboot support ..."
     memdisk_img=`mktemp "$MKTEMP_TEMPLATE"`
     memdisk_dir=`mktemp -d "$MKTEMP_TEMPLATE"`
     mkdir -p ${memdisk_dir}/boot/grub
     # obtain date-based UUID
     iso_uuid=$(date -u +%Y-%m-%d-%H-%M-%S-00)
 
-    modules="$(cat ${coreboot_dir}/partmap.lst) ${modules}"
+    modules="$(cat ${multiboot_dir}/partmap.lst) ${modules}"
     cat << EOF > ${memdisk_dir}/boot/grub/grub.cfg
 search --fs-uuid --set ${iso_uuid}
-set prefix=(\${root})/boot/grub/${target_cpu}-coreboot
+set prefix=(\${root})/boot/grub/${target_cpu}-multiboot
 EOF
     (for i in ${modules} ; do
         echo "insmod $i"
     done ; \
     echo "source /boot/grub/grub.cfg") \
-    > ${iso9660_dir}/boot/grub/i386-coreboot/grub.cfg
+    > ${iso9660_dir}/boot/grub/i386-multiboot/grub.cfg
 
     tar -C ${memdisk_dir} -cf ${memdisk_img} boot
     rm -rf ${memdisk_dir}
-    grub-mkelfimage -d ${coreboot_dir}/ -m ${memdisk_img} -o ${iso9660_dir}/boot/multiboot.img \
+    grub-mkelfimage -d ${multiboot_dir}/ -m ${memdisk_img} -o ${iso9660_dir}/boot/multiboot.img \
         memdisk tar search iso9660 configfile sh \
         ata at_keyboard
     rm -f ${memdisk_img}