summaryrefslogtreecommitdiffstats
path: root/UefiCpuPkg
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
parentedd74ad3ad79b855f76d9cf60a96c405cb3e863b (diff)
downloadedk2-ebfe2d3eb5ac7fd92d74011edb31303a181920c7.tar.gz
edk2-ebfe2d3eb5ac7fd92d74011edb31303a181920c7.tar.bz2
edk2-ebfe2d3eb5ac7fd92d74011edb31303a181920c7.zip
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')
-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 c3489bcc3e..66f8857fc0 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
;------------------------------------------------------------------------------