src/arch/x86/exit_car: Add proper x86_64 code

Don't truncate upper bits in assembly code and thus allow loading
of postcar stage above 4GiB.

Tested on qemu with cbmem_top set to TOUUD.

Change-Id: I42d1086f1220e44076ccf613244fc3c6d804805b
Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
Signed-off-by: Benjamin Doron <benjamin.doron@9elements.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/79162
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
This commit is contained in:
Patrick Rudolph 2021-12-03 17:17:45 +01:00 committed by Martin L Roth
parent c4fbc9146d
commit 3d93cd78d8
1 changed files with 6 additions and 0 deletions

View File

@ -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. */