We need to write in some location but no reasons to not
trying to restore what we potentially overwrote.
Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
xen/arch/x86/boot/head.S | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
index d8ac0f0494..3e1e9e05b6 100644
--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -418,13 +418,17 @@ __pvh_start:
* absolute stack address as the native path, for lack of a better
* alternative.
*/
- mov $0x1000, %esp
+ mov $0xffc, %esp
+ pop %edx
/* Calculate the load base address. */
call 1f
1: pop %esi
sub $sym_offs(1b), %esi
+ /* Restore clobbered stack */
+ push %edx
+
/* Set up stack. */
lea STACK_SIZE - CPUINFO_sizeof + sym_esi(cpu0_stack), %esp
@@ -468,13 +472,17 @@ __start:
* this page for a temporary stack, being one of the safest locations
* to clobber.
*/
- mov $0x1000, %esp
+ mov $0xffc, %esp
+ pop %edx
/* Calculate the load base address. */
call 1f
1: pop %esi
sub $sym_offs(1b), %esi
+ /* Restore clobbered stack */
+ push %edx
+
/* Set up stack. */
lea STACK_SIZE - CPUINFO_sizeof + sym_esi(cpu0_stack), %esp
--
2.46.0