summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Jones <marcj303@gmail.com>2011-10-06 16:38:35 -0600
committerMarc Jones <marcj303@gmail.com>2011-10-11 11:47:06 +0200
commit5f145faff88ac6a0951277142e8b4f8116ae79de (patch)
tree4af0f5b5d29daa622802f6ca0ca08134585308f4
parent07bf9119310ceece5a6c76907004bc96af1a38cc (diff)
Don't do a call as the first instruction in libpayload.
Doing a call before the payload has set up its stack is risky. The stack may not be in a favorable location. Normally this is not an issue with coreboot or other well behaved callers. Change-Id: Ie6f6748a471324b29ebad045c807dfc9f4b92034 Signed-off-by: Marc Jones <marcj303@gmail.com> Reviewed-on: http://review.coreboot.org/240 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
-rw-r--r--payloads/libpayload/arch/i386/head.S8
1 files changed, 4 insertions, 4 deletions
diff --git a/payloads/libpayload/arch/i386/head.S b/payloads/libpayload/arch/i386/head.S
index 88db4124d5..3dd61336f9 100644
--- a/payloads/libpayload/arch/i386/head.S
+++ b/payloads/libpayload/arch/i386/head.S
@@ -38,10 +38,7 @@
* change anything.
*/
_entry:
- call _init
-
- /* We're back - go back to the bootloader. */
- ret
+ jmp _init
.align 4
@@ -66,6 +63,9 @@ _init:
/* No interrupts, please. */
cli
+ /* There is a bunch of stuff missing here to take arguments on the stack
+ * See http://www.coreboot.org/Payload_API and exec.S.
+ */
/* Store current stack pointer. */
movl %esp, %esi