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>
+
+ 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.
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)
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)
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)
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
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
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
--- /dev/null
+#include <grub/i386/multiboot.h>
#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;
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);