summaryrefslogtreecommitdiff
path: root/src/arch/x86/exit_car.S
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/x86/exit_car.S')
-rw-r--r--src/arch/x86/exit_car.S6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/arch/x86/exit_car.S b/src/arch/x86/exit_car.S
index c9ff866b1a..d435dbe25b 100644
--- a/src/arch/x86/exit_car.S
+++ b/src/arch/x86/exit_car.S
@@ -67,8 +67,14 @@ skip_clflush:
invd
movl $_estack, %esp
+#if ENV_X86_64
+ /* Align stack to 16 bytes at call instruction. */
+ movq $0xfffffffffffffff0, %rax
+ and %rax, %rsp
+#else
/* Align stack to 16 bytes at call instruction. */
andl $0xfffffff0, %esp
+#endif
/* Call this in assembly as some platforms like to mess with the bootflow and
call into main directly from chipset_teardown_car. */