summaryrefslogtreecommitdiff
path: root/UefiCpuPkg/CpuDxe/X64
diff options
context:
space:
mode:
authorGuo Dong <guo.dong@intel.com>2021-01-07 11:10:45 +0800
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2021-01-12 06:35:30 +0000
commitebfe2d3eb5ac7fd92d74011edb31303a181920c7 (patch)
tree1b5d73ff4268eb811ca66e106ef4ccb51cc6e4d8 /UefiCpuPkg/CpuDxe/X64
parentedd74ad3ad79b855f76d9cf60a96c405cb3e863b (diff)
downloadedk2-ebfe2d3eb5ac7fd92d74011edb31303a181920c7.zip
edk2-ebfe2d3eb5ac7fd92d74011edb31303a181920c7.tar.gz
edk2-ebfe2d3eb5ac7fd92d74011edb31303a181920c7.tar.bz2
UefiCpuPkg/CpuDxe: Fix boot error
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3084 When DXE drivers are dispatched above 4GB memory in 64bit mode, the address setCodeSelectorLongJump in stack will be override by parameter. Jump to Qword is not supported by some processors. So use "o64 retf" instead. Signed-off-by: Guo Dong <guo.dong@intel.com> Acked-by: Laszlo Ersek <lersek@redhat.com> Tested-by: Tom Lendacky <thomas.lendacky@amd.com> Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com> Tested-by: James Bottomley <jejb@linux.ibm.com> Reviewed-by: Ray Ni <ray.ni@intel.com>
Diffstat (limited to 'UefiCpuPkg/CpuDxe/X64')
-rw-r--r--UefiCpuPkg/CpuDxe/X64/CpuAsm.nasm8
1 files changed, 3 insertions, 5 deletions
diff --git a/UefiCpuPkg/CpuDxe/X64/CpuAsm.nasm b/UefiCpuPkg/CpuDxe/X64/CpuAsm.nasm
index c3489bc..66f8857 100644
--- a/UefiCpuPkg/CpuDxe/X64/CpuAsm.nasm
+++ b/UefiCpuPkg/CpuDxe/X64/CpuAsm.nasm
@@ -20,13 +20,11 @@
;------------------------------------------------------------------------------
global ASM_PFX(SetCodeSelector)
ASM_PFX(SetCodeSelector):
- sub rsp, 0x10
+ push rcx
lea rax, [setCodeSelectorLongJump]
- mov [rsp], rax
- mov [rsp+4], cx
- jmp dword far [rsp]
+ push rax
+ o64 retf
setCodeSelectorLongJump:
- add rsp, 0x10
ret
;------------------------------------------------------------------------------