From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by mx.groups.io with SMTP id smtpd.web11.3388.1609989050662494970 for ; Wed, 06 Jan 2021 19:10:51 -0800 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.120, mailfrom: guo.dong@intel.com) IronPort-SDR: FuBOP1UzCjU6pflAIl052nWVy1Z8cfypxkafgmeV2Wcrlw+egnFVfQUZM7yur5kgPTE35Z1eM+ zhtfJZ2VElSw== X-IronPort-AV: E=McAfee;i="6000,8403,9856"; a="174791105" X-IronPort-AV: E=Sophos;i="5.79,328,1602572400"; d="scan'208";a="174791105" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Jan 2021 19:10:49 -0800 IronPort-SDR: 7tM5AJ6DRdWfyXTRpx42VQdGHugjl/Lpw8zDJtjVj8xi8hRLHkx2j7URCsryzMyl/Kn612egWa D5TEsyJtzwyg== X-IronPort-AV: E=Sophos;i="5.79,328,1602572400"; d="scan'208";a="379542571" Received: from gdong1-mobl.amr.corp.intel.com ([10.212.83.15]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Jan 2021 19:10:48 -0800 From: "Guo Dong" To: devel@edk2.groups.io Cc: eric.dong@intel.com, ray.ni@intel.com, lersek@redhat.com, rahul1.kumar@intel.com Subject: [edk2-devel] [PATCH V2] UefiCpuPkg/CpuDxe: Fix boot error Date: Wed, 6 Jan 2021 20:10:45 -0700 Message-Id: <20210107031045.6760-1-guo.dong@intel.com> X-Mailer: git-send-email 2.16.2.windows.1 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 --- UefiCpuPkg/CpuDxe/X64/CpuAsm.nasm | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/UefiCpuPkg/CpuDxe/X64/CpuAsm.nasm b/UefiCpuPkg/CpuDxe/X64/CpuAsm.nasm index c3489bcc3e..a8216cd56f 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 ;------------------------------------------------------------------------------ -- 2.16.2.windows.1