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.
This commit is contained in:
parent
884ade5654
commit
a0b766fc9b
7 changed files with 61 additions and 44 deletions
33
ChangeLog
33
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>
|
2010-01-15 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
Video multiboot support.
|
Video multiboot support.
|
||||||
|
|
|
@ -140,22 +140,6 @@ serial_mod_SOURCES = term/i386/pc/serial.c
|
||||||
serial_mod_CFLAGS = $(COMMON_CFLAGS)
|
serial_mod_CFLAGS = $(COMMON_CFLAGS)
|
||||||
serial_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
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.
|
# For aout.mod.
|
||||||
aout_mod_SOURCES = loader/aout.c
|
aout_mod_SOURCES = loader/aout.c
|
||||||
aout_mod_CFLAGS = $(COMMON_CFLAGS)
|
aout_mod_CFLAGS = $(COMMON_CFLAGS)
|
||||||
|
|
|
@ -201,22 +201,6 @@ serial_mod_SOURCES = term/i386/pc/serial.c
|
||||||
serial_mod_CFLAGS = $(COMMON_CFLAGS)
|
serial_mod_CFLAGS = $(COMMON_CFLAGS)
|
||||||
serial_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
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.
|
# For vbe.mod.
|
||||||
vbe_mod_SOURCES = video/i386/pc/vbe.c
|
vbe_mod_SOURCES = video/i386/pc/vbe.c
|
||||||
vbe_mod_CFLAGS = $(COMMON_CFLAGS)
|
vbe_mod_CFLAGS = $(COMMON_CFLAGS)
|
||||||
|
|
|
@ -25,3 +25,19 @@ pkglib_MODULES += ata.mod
|
||||||
ata_mod_SOURCES = disk/ata.c
|
ata_mod_SOURCES = disk/ata.c
|
||||||
ata_mod_CFLAGS = $(COMMON_CFLAGS)
|
ata_mod_CFLAGS = $(COMMON_CFLAGS)
|
||||||
ata_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
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)
|
||||||
|
|
|
@ -32,7 +32,7 @@ grub_install_SOURCES = util/i386/efi/grub-install.in
|
||||||
pkglib_MODULES = kernel.img chain.mod appleldr.mod \
|
pkglib_MODULES = kernel.img chain.mod appleldr.mod \
|
||||||
halt.mod reboot.mod linux.mod pci.mod lspci.mod \
|
halt.mod reboot.mod linux.mod pci.mod lspci.mod \
|
||||||
datetime.mod date.mod datehook.mod loadbios.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.
|
# For kernel.img.
|
||||||
kernel_img_EXPORTS = no
|
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_CFLAGS = $(COMMON_CFLAGS)
|
||||||
acpi_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
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.
|
# For mmap.mod.
|
||||||
mmap_mod_SOURCES = mmap/mmap.c mmap/i386/uppermem.c mmap/i386/mmap.c \
|
mmap_mod_SOURCES = mmap/mmap.c mmap/i386/uppermem.c mmap/i386/mmap.c \
|
||||||
mmap/efi/mmap.c
|
mmap/efi/mmap.c
|
||||||
|
@ -166,10 +161,5 @@ xnu_mod_CFLAGS = $(COMMON_CFLAGS)
|
||||||
xnu_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
xnu_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
||||||
xnu_mod_ASFLAGS = $(COMMON_ASFLAGS)
|
xnu_mod_ASFLAGS = $(COMMON_ASFLAGS)
|
||||||
|
|
||||||
pkglib_MODULES += relocator.mod
|
include $(srcdir)/conf/i386.mk
|
||||||
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/common.mk
|
include $(srcdir)/conf/common.mk
|
||||||
|
|
1
include/grub/x86_64/multiboot.h
Normal file
1
include/grub/x86_64/multiboot.h
Normal file
|
@ -0,0 +1 @@
|
||||||
|
#include <grub/i386/multiboot.h>
|
|
@ -46,6 +46,10 @@
|
||||||
#include <grub/i386/relocator.h>
|
#include <grub/i386/relocator.h>
|
||||||
#include <grub/video.h>
|
#include <grub/video.h>
|
||||||
|
|
||||||
|
#ifdef GRUB_MACHINE_EFI
|
||||||
|
#include <grub/efi/efi.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
extern grub_dl_t my_mod;
|
extern grub_dl_t my_mod;
|
||||||
static grub_size_t code_size, alloc_mbi;
|
static grub_size_t code_size, alloc_mbi;
|
||||||
|
|
||||||
|
@ -88,6 +92,11 @@ grub_multiboot_boot (void)
|
||||||
if (err)
|
if (err)
|
||||||
return 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_relocator32_boot (grub_multiboot_payload_orig,
|
||||||
grub_multiboot_payload_dest,
|
grub_multiboot_payload_dest,
|
||||||
state);
|
state);
|
||||||
|
|
Loading…
Reference in a new issue