aboutsummaryrefslogtreecommitdiffstats
path: root/src/arch
diff options
context:
space:
mode:
authorDentcho Ludmilov Bankov <dbankov@vmware.com>2019-02-02 00:20:21 +0200
committerMichael Brown <mcb30@ipxe.org>2020-07-27 15:41:46 +0100
commit70b1a641c543cc6d87965df93d1b48eed4e15297 (patch)
treeea1299c3937eea1c6445e797d0f8c5ff76b70ab8 /src/arch
parentb76052335788d0ad2c4b0bded116c3b02dd4bbc2 (diff)
downloadipxe-70b1a641c543cc6d87965df93d1b48eed4e15297.tar.gz
[comboot] Fix stack pointer retrieval after COM32 binary returns
This change fixes the offset used when retrieving the iPXE stack pointer after a COM32 binary returns. The iPXE stack pointer is saved at the top of the available memory then the the top of the stack for the COM32 binary is set just below it. However seven more items are pushed on the COM32 stack before the entry point is invoked so when the COM32 binary returns the location of the iPXE stack pointer is 28 (and not 24) bytes above the current stack pointer. Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/x86/image/com32.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/arch/x86/image/com32.c b/src/arch/x86/image/com32.c
index 016652877..6f0e66041 100644
--- a/src/arch/x86/image/com32.c
+++ b/src/arch/x86/image/com32.c
@@ -110,7 +110,7 @@ static int com32_exec_loop ( struct image *image ) {
/* Disable interrupts */
"cli\n\t"
/* Restore stack pointer */
- "movl 24(%%esp), %%esp\n\t"
+ "movl 28(%%esp), %%esp\n\t"
/* Restore registers */
"popal\n\t" )
: