From cee5b0441af39dd6f76cc4e0447a1c7f788cbb00 Mon Sep 17 00:00:00 2001 From: Guo Dong Date: Wed, 2 Dec 2020 14:18:18 -0700 Subject: [PATCH] UefiCpuPkg/CpuDxe: Fix boot error REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3084 When DXE drivers are dispatched above 4GB memory and the system is already in 64bit mode, the address setCodeSelectorLongJump in stack will be override by parameter. so change to use 64bit address and jump to qword address. Signed-off-by: Guo Dong Reviewed-by: Ray Ni Reviewed-by: Eric Dong --- UefiCpuPkg/CpuDxe/X64/CpuAsm.nasm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/UefiCpuPkg/CpuDxe/X64/CpuAsm.nasm b/UefiCpuPkg/CpuDxe/X64/CpuAsm.nasm index c3489bcc3e..6ad32b49f4 100644 --- a/UefiCpuPkg/CpuDxe/X64/CpuAsm.nasm +++ b/UefiCpuPkg/CpuDxe/X64/CpuAsm.nasm @@ -23,8 +23,8 @@ ASM_PFX(SetCodeSelector): sub rsp, 0x10 lea rax, [setCodeSelectorLongJump] mov [rsp], rax - mov [rsp+4], cx - jmp dword far [rsp] + mov [rsp+8], cx + jmp qword far [rsp] setCodeSelectorLongJump: add rsp, 0x10 ret