[PATCH] libpayload: Add multiboot support

Make libpayload applications multiboot compatible.  Add the
multiboot OS table and grok the loader table, especially the
memory map and the command line.  This makes libpayload 
applications loadable by GRUB.

Signed-off-by: Jordan Crouse <jordan.crouse@amd.com>
Acked-by: Peter Stuge <peter@stuge.se>


git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3673 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
Jordan Crouse
2008-10-20 16:51:43 +00:00
parent 369a5f6c7a
commit 20c9cf12a4
10 changed files with 234 additions and 3 deletions

View File

@@ -27,6 +27,7 @@
* SUCH DAMAGE.
*/
.code32
.global _entry, _leave
.text
.align 4
@@ -42,6 +43,21 @@ _entry:
/* We're back - go back to the bootloader. */
ret
.align 4
#define MB_MAGIC 0x1BADB002
#define MB_FLAGS 0x00010003
mb_header:
.long MB_MAGIC
.long MB_FLAGS
.long -(MB_MAGIC + MB_FLAGS)
.long mb_header
.long _start
.long _edata
.long _end
.long _init
/*
* This function saves off the previous stack and switches us to our
* own execution environment.
@@ -53,6 +69,11 @@ _init:
/* Store current stack pointer. */
movl %esp, %esi
/* Store EAX and EBX */
movl %eax,loader_eax
movl %ebx,loader_ebx
/* Setup new stack. */
movl $_stack, %ebx