]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
2010-01-15 Vladimir Serbinenko <phcoder@gmail.com>
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Fri, 15 Jan 2010 20:11:51 +0000 (21:11 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Fri, 15 Jan 2010 20:11:51 +0000 (21:11 +0100)
Enable multiboot on non-pc.

* conf/i386-coreboot.rmk, conf/i386-pc.rmk (pkglib_MODULES): Move
multiboot.mod and multiboot2.mod to ...
* conf/i386.rmk (pkglib_MODULES): ... here.
* conf/i386-coreboot.rmk, conf/i386-pc.rmk (multiboot_mod_SOURCES):
Moved to ...
* conf/i386.rmk (multiboot_mod_SOURCES): .. here.
* conf/i386-coreboot.rmk, conf/i386-pc.rmk (multiboot_mod_CFLAGS):
Moved to ...
* conf/i386.rmk (multiboot_mod_CFLAGS): .. here.
* conf/i386-coreboot.rmk, conf/i386-pc.rmk (multiboot_mod_ASFLAGS):
Moved to ...
* conf/i386.rmk (multiboot_mod_ASFLAGS): .. here.
* conf/i386-coreboot.rmk, conf/i386-pc.rmk (multiboot_mod_LDFLAGS):
Moved to ...
* conf/i386.rmk (multiboot_mod_LDFLAGS): .. here.
* conf/x86_64-efi.rmk (pkglib_MODULES): Remove ata.mod and
relocator.mod.
(ata_mod_SOURCES): Removed.
(ata_mod_CFLAGS): Likewise.
(ata_mod_LDFLAGS): Likewise.
(relocator_mod_SOURCES): Removed.
(relocator_mod_CFLAGS): Likewise.
(relocator_mod_ASFLAGS): Likewise.
(relocator_mod_LDFLAGS): Likewise.
Include i386.mk.
* include/grub/x86_64/multiboot.h: New file.
* loader/i386/multiboot.c (grub_multiboot_boot) [GRUB_MACHINE_EFI]:
Terminate EFI.

ChangeLog
conf/i386-coreboot.rmk
conf/i386-pc.rmk
conf/i386.rmk
conf/x86_64-efi.rmk
include/grub/x86_64/multiboot.h [new file with mode: 0644]
loader/i386/multiboot.c

index 8d3245ea3ecafef4e0f1ec68f5105f9a6dbeb164..3acc543d449abaa21353e124ed34d169d71fbc88 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,36 @@
+2010-01-15  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       Enable multiboot on non-pc.
+
+       * conf/i386-coreboot.rmk, conf/i386-pc.rmk (pkglib_MODULES): Move
+       multiboot.mod and multiboot2.mod to ...
+       * conf/i386.rmk (pkglib_MODULES): ... here.
+       * conf/i386-coreboot.rmk, conf/i386-pc.rmk (multiboot_mod_SOURCES):
+       Moved to ...
+       * conf/i386.rmk (multiboot_mod_SOURCES): .. here.
+       * conf/i386-coreboot.rmk, conf/i386-pc.rmk (multiboot_mod_CFLAGS):
+       Moved to ...
+       * conf/i386.rmk (multiboot_mod_CFLAGS): .. here.
+       * conf/i386-coreboot.rmk, conf/i386-pc.rmk (multiboot_mod_ASFLAGS):
+       Moved to ...
+       * conf/i386.rmk (multiboot_mod_ASFLAGS): .. here.
+       * conf/i386-coreboot.rmk, conf/i386-pc.rmk (multiboot_mod_LDFLAGS):
+       Moved to ...
+       * conf/i386.rmk (multiboot_mod_LDFLAGS): .. here.
+       * conf/x86_64-efi.rmk (pkglib_MODULES): Remove ata.mod and
+       relocator.mod.
+       (ata_mod_SOURCES): Removed.
+       (ata_mod_CFLAGS): Likewise.
+       (ata_mod_LDFLAGS): Likewise.
+       (relocator_mod_SOURCES): Removed.
+       (relocator_mod_CFLAGS): Likewise.
+       (relocator_mod_ASFLAGS): Likewise.
+       (relocator_mod_LDFLAGS): Likewise.
+       Include i386.mk.
+       * include/grub/x86_64/multiboot.h: New file.
+       * loader/i386/multiboot.c (grub_multiboot_boot) [GRUB_MACHINE_EFI]:
+       Terminate EFI.
+
 2010-01-15  Vladimir Serbinenko  <phcoder@gmail.com>
 
        Video multiboot support.
index d73c9f0e2c56196846db1575ab99c0df4a276b73..57fb3350c1f3e8b8add686b25e6651b01138bdab 100644 (file)
@@ -140,22 +140,6 @@ serial_mod_SOURCES = term/i386/pc/serial.c
 serial_mod_CFLAGS = $(COMMON_CFLAGS)
 serial_mod_LDFLAGS = $(COMMON_LDFLAGS)
 
-pkglib_MODULES += multiboot.mod
-multiboot_mod_SOURCES = loader/i386/multiboot.c \
-                       loader/i386/multiboot_mbi.c \
-                       loader/multiboot_loader.c
-multiboot_mod_CFLAGS = $(COMMON_CFLAGS)
-multiboot_mod_LDFLAGS = $(COMMON_LDFLAGS)
-multiboot_mod_ASFLAGS = $(COMMON_ASFLAGS)
-
-pkglib_MODULES += multiboot2.mod
-multiboot2_mod_SOURCES = loader/i386/multiboot.c \
-                         loader/multiboot_loader.c \
-                        loader/i386/multiboot_mbi.c
-multiboot2_mod_CFLAGS = $(COMMON_CFLAGS) -DGRUB_USE_MULTIBOOT2
-multiboot2_mod_LDFLAGS = $(COMMON_LDFLAGS)
-multiboot2_mod_ASFLAGS = $(COMMON_ASFLAGS)
-
 # For aout.mod.
 aout_mod_SOURCES = loader/aout.c
 aout_mod_CFLAGS = $(COMMON_CFLAGS)
index 2a69571aa0139599537d262065d768ad8779a662..a89203dea2ff842e8491ca2f0d810acd052f37f1 100644 (file)
@@ -201,22 +201,6 @@ serial_mod_SOURCES = term/i386/pc/serial.c
 serial_mod_CFLAGS = $(COMMON_CFLAGS)
 serial_mod_LDFLAGS = $(COMMON_LDFLAGS)
 
-pkglib_MODULES += multiboot.mod
-multiboot_mod_SOURCES = loader/i386/multiboot.c \
-                       loader/i386/multiboot_mbi.c \
-                        loader/multiboot_loader.c
-multiboot_mod_CFLAGS = $(COMMON_CFLAGS)
-multiboot_mod_LDFLAGS = $(COMMON_LDFLAGS)
-multiboot_mod_ASFLAGS = $(COMMON_ASFLAGS)
-
-pkglib_MODULES += multiboot2.mod
-multiboot2_mod_SOURCES = loader/i386/multiboot.c \
-                        loader/i386/multiboot_mbi.c \
-                         loader/multiboot_loader.c
-multiboot2_mod_CFLAGS = $(COMMON_CFLAGS) -DGRUB_USE_MULTIBOOT2
-multiboot2_mod_LDFLAGS = $(COMMON_LDFLAGS)
-multiboot2_mod_ASFLAGS = $(COMMON_ASFLAGS)
-
 # For vbe.mod.
 vbe_mod_SOURCES = video/i386/pc/vbe.c
 vbe_mod_CFLAGS = $(COMMON_CFLAGS)
index c3f036d0fd04d1e98231777d165c69e7da2c369e..7ef337c612724601dd4af4715e5437ec624e46a3 100644 (file)
@@ -25,3 +25,19 @@ pkglib_MODULES += ata.mod
 ata_mod_SOURCES = disk/ata.c
 ata_mod_CFLAGS = $(COMMON_CFLAGS)
 ata_mod_LDFLAGS = $(COMMON_LDFLAGS)
+
+pkglib_MODULES += multiboot.mod
+multiboot_mod_SOURCES = loader/i386/multiboot.c \
+                       loader/i386/multiboot_mbi.c \
+                        loader/multiboot_loader.c
+multiboot_mod_CFLAGS = $(COMMON_CFLAGS)
+multiboot_mod_LDFLAGS = $(COMMON_LDFLAGS)
+multiboot_mod_ASFLAGS = $(COMMON_ASFLAGS)
+
+pkglib_MODULES += multiboot2.mod
+multiboot2_mod_SOURCES = loader/i386/multiboot.c \
+                        loader/i386/multiboot_mbi.c \
+                         loader/multiboot_loader.c
+multiboot2_mod_CFLAGS = $(COMMON_CFLAGS) -DGRUB_USE_MULTIBOOT2
+multiboot2_mod_LDFLAGS = $(COMMON_LDFLAGS)
+multiboot2_mod_ASFLAGS = $(COMMON_ASFLAGS)
index 4f6ace0572583148cc3c5c0d176b2e489a83d236..122700711d0867ec136e231586b8235e7d9e84fb 100644 (file)
@@ -32,7 +32,7 @@ grub_install_SOURCES = util/i386/efi/grub-install.in
 pkglib_MODULES = kernel.img chain.mod appleldr.mod     \
        halt.mod reboot.mod linux.mod pci.mod lspci.mod \
        datetime.mod date.mod datehook.mod loadbios.mod \
-       fixvideo.mod mmap.mod acpi.mod ata.mod
+       fixvideo.mod mmap.mod acpi.mod
 
 # For kernel.img.
 kernel_img_EXPORTS = no
@@ -77,11 +77,6 @@ acpi_mod_SOURCES = commands/acpi.c commands/efi/acpi.c
 acpi_mod_CFLAGS = $(COMMON_CFLAGS)
 acpi_mod_LDFLAGS = $(COMMON_LDFLAGS)
 
-# For ata.mod
-ata_mod_SOURCES = disk/ata.c
-ata_mod_CFLAGS = $(COMMON_CFLAGS)
-ata_mod_LDFLAGS = $(COMMON_LDFLAGS)
-
 # For mmap.mod.
 mmap_mod_SOURCES = mmap/mmap.c mmap/i386/uppermem.c mmap/i386/mmap.c \
                   mmap/efi/mmap.c
@@ -166,10 +161,5 @@ xnu_mod_CFLAGS = $(COMMON_CFLAGS)
 xnu_mod_LDFLAGS = $(COMMON_LDFLAGS)
 xnu_mod_ASFLAGS = $(COMMON_ASFLAGS)
 
-pkglib_MODULES += relocator.mod
-relocator_mod_SOURCES = lib/i386/relocator.c lib/i386/relocator_asm.S lib/i386/relocator_backward.S
-relocator_mod_CFLAGS = $(COMMON_CFLAGS)
-relocator_mod_ASFLAGS = $(COMMON_ASFLAGS)
-relocator_mod_LDFLAGS = $(COMMON_LDFLAGS)
-
+include $(srcdir)/conf/i386.mk
 include $(srcdir)/conf/common.mk
diff --git a/include/grub/x86_64/multiboot.h b/include/grub/x86_64/multiboot.h
new file mode 100644 (file)
index 0000000..957c7a5
--- /dev/null
@@ -0,0 +1 @@
+#include <grub/i386/multiboot.h>
index 637bc5d492df0b3d30810b4b49fabfa8840c0f7a..d06f18692488adccc11420305ffcff4d50b5880c 100644 (file)
 #include <grub/i386/relocator.h>
 #include <grub/video.h>
 
+#ifdef GRUB_MACHINE_EFI
+#include <grub/efi/efi.h>
+#endif
+
 extern grub_dl_t my_mod;
 static grub_size_t code_size, alloc_mbi;
 
@@ -88,6 +92,11 @@ grub_multiboot_boot (void)
   if (err)
     return err;
 
+#ifdef GRUB_MACHINE_EFI
+  if (! grub_efi_finish_boot_services ())
+     grub_fatal ("cannot exit boot services");
+#endif
+
   grub_relocator32_boot (grub_multiboot_payload_orig,
                         grub_multiboot_payload_dest,
                         state);