This patch is to introduce multiboot 2 loading capabilities to grub2

for powerpc & i386-pc. This patch was more so started by Hollis
Blanchard getting multiboot 2 working for powerpc and I added to it
and cleaned it up.

One of the ideas with this patch is to keep everything under one
command for the user. So instead of having a "multiboot2" & "module2"
command, I created a proxy like mechanism so that you have only one
command for both multiboot 1 & 2 ... "multiboot". This is where
"loader/multiboot_loader.c" comes from. I could have integrated things
more but I figure the current approach will less likely break
anything.

So if your OS is multiboot 2 capable, the user would do the following
to load it up from a grub prompt:

grub> multiboot <location of kernel> <kernel args>
grub> module <some image> <multiboot tag> <image arguments>
grub> module <isome mage> <multiboot tag> <image arguments>
grub .....


The other thing that this patch does is it begins to make the
multiboot 1 code a bit more architecture agnostic so IF someone wanted
to implement it on another architecture they can.

A bit of file moving around and definition renaming is also apart of
this patch. I have also taken the time to make sure that it does not
break multiboot 1 loading on i386-pc. But mulitboot 2 may still need a
little more testing and work for i386-pc. Powerpc multiboot 2 has been
heavily tested and does work.
This commit is contained in:
jerone 2007-07-25 00:44:03 +00:00
parent daf0f0ba3e
commit e5dfe7775a
17 changed files with 1315 additions and 300 deletions

View file

@ -1,3 +1,32 @@
2007-07-24 Jerone Young <jerone@gmail.com>
* conf/i386-pc.rmk: Add Multiboot loader and multiboot 2 to multiboot
modules for compilation.
* conf/powerpc-ieee1275.rmk: Likewise.
* include/multiboot.h: Move multiboot definitions to one file. Rename
many definitions to not get grub specific.
* include/multiboot2.h: Create header with multiboot 2 definitions.
* include/grub/multiboot.h: Header for grub specific function
prototypes and definitions.
* include/grub/multiboot2.h: Likewise.
* include/grub/multiboot_loader.h: Likewise.
* include/grub/i386/pc/multiboot.h: Removed.
* include/grub/powerpc/ieee1275/multiboot.h: Removed.
* loader/multiboot_loader.c: Created to act as a proxy for multiboot 1
and 2 to allow for one multiboot and module commands.
* loader/multiboot2.c: Add multiboot2 functionality.
* loader/i386/pc/multiboot.c: Modify for new multiboot header location
and definition names.
* loader/i386/pc/multiboot2.c: Created to add i386 specific multiboot
2 functions.
* loader/powerpc/ieee1275/multiboot2.c: Created to add powerpc
ieee1275 specific multiboot2 code.
* kern/i386/pc/startup.S: Change headers and definition names for
multiboot. Add function grub_multiboot2_real_boot for multiboot 2.
2007-07-22 Robert Millan <rmh@aybabtu.com>
* geninitheader.sh: Process file specified in first parameter rather