summaryrefslogtreecommitdiff
path: root/payloads/libpayload/i386/head.S
diff options
context:
space:
mode:
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