diff options
author | Jordan Crouse <jordan.crouse@amd.com> | 2008-10-20 16:51:43 +0000 |
---|---|---|
committer | Jordan Crouse <jordan.crouse@amd.com> | 2008-10-20 16:51:43 +0000 |
commit | 20c9cf12a4a8bc2a7939e7bbf490324984f5b055 (patch) | |
tree | 3ea6c90e80780dfcdda5d35b0a426d83349a0b49 /payloads/libpayload/i386/head.S | |
parent | 369a5f6c7a18516cb4da054d0e328f7464da9da7 (diff) |
[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
Diffstat (limited to 'payloads/libpayload/i386/head.S')
-rw-r--r-- | payloads/libpayload/i386/head.S | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/payloads/libpayload/i386/head.S b/payloads/libpayload/i386/head.S index 54f60e1469..db18a5195f 100644 --- a/payloads/libpayload/i386/head.S +++ b/payloads/libpayload/i386/head.S @@ -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 |