aboutsummaryrefslogtreecommitdiff
path: root/payloads/libpayload/i386/head.S
diff options
context:
space:
mode:
authorJordan Crouse <jordan.crouse@amd.com>2008-10-20 16:51:43 +0000
committerJordan Crouse <jordan.crouse@amd.com>2008-10-20 16:51:43 +0000
commit20c9cf12a4a8bc2a7939e7bbf490324984f5b055 (patch)
tree3ea6c90e80780dfcdda5d35b0a426d83349a0b49 /payloads/libpayload/i386/head.S
parent369a5f6c7a18516cb4da054d0e328f7464da9da7 (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.S21
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