From d808757641d2f0f347f7670fec30e8d322a74151 Mon Sep 17 00:00:00 2001 From: Mathias Krause Date: Sat, 11 Feb 2017 22:34:46 +0100 Subject: [PATCH] UPSTREAM: libpayload: x86/exec - fix argc/argv value passing According to coreboots payload API [1] the argc value should be passed at stack offset 0x10, so we need to push a dummy value to comply to the API. [1] https://www.coreboot.org/Payload_API BUG=none BRANCH=none TEST=none Change-Id: I2acc66d20fcc4e313d1ddbc4a7bc1772548981c5 Signed-off-by: Furquan Shaikh Original-Commit-Id: 9fa78c136d6a6538576fb15ccd05d8483ea05ab5 Original-Change-Id: Id20424185a5bf7e4d94de1886a2cece3f3968371 Original-Signed-off-by: Mathias Krause Original-Reviewed-on: https://review.coreboot.org/18333 Original-Tested-by: build bot (Jenkins) Original-Reviewed-by: Paul Menzel Original-Reviewed-by: Aaron Durbin Reviewed-on: https://chromium-review.googlesource.com/444814 --- payloads/libpayload/arch/x86/exec.S | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/payloads/libpayload/arch/x86/exec.S b/payloads/libpayload/arch/x86/exec.S index 7d89cc00a5..54c83f653e 100644 --- a/payloads/libpayload/arch/x86/exec.S +++ b/payloads/libpayload/arch/x86/exec.S @@ -53,12 +53,17 @@ i386_do_exec: pushl %ecx pushl %ebp - /* Push the argc and argv pointers on to the stack */ + /* Push argc and argv on to the stack. + * + * We need to put a dummy value inbetween, as argc should be at offset + * 0x10, according to the payload API. + */ movl 12(%ebp), %esi movl 16(%ebp), %ecx pushl %esi + pushl $0 pushl %ecx /* Move a "magic" number on the stack - the other