From: "gaoliming" <gaoliming@byosoft.com.cn>
To: <devel@edk2.groups.io>, <yun.lou@intel.com>,
"'Kinney, Michael D'" <michael.d.kinney@intel.com>
Cc: "'Liu, Zhiguang'" <zhiguang.liu@intel.com>
Subject: 回复: [edk2-devel] [PATCH v1 2/4] MdePkg: Replace Opcode with the corresponding instructions.
Date: Tue, 4 Jan 2022 11:14:24 +0800 [thread overview]
Message-ID: <011701d80119$2d01c310$87054930$@byosoft.com.cn> (raw)
In-Reply-To: <BYAPR11MB343173A115F1BA9671160DE6F5449@BYAPR11MB3431.namprd11.prod.outlook.com>
Jason:
Can you also update MdePkg\Include\Ia32\Nasm.inc and MdePkg\Include\X64\Nasm.inc?
Meanwhile, please also update BaseTools\Conf\tools_def.template to mention the required minimal nasm version. Current version is 2.12.01. It should be updated to 2.15.06 with these changes.
Thanks
Liming
> -----邮件原件-----
> 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Jason Lou
> 发送时间: 2021年12月29日 11:51
> 收件人: Gao, Liming <gaoliming@byosoft.com.cn>
> 抄送: Kinney, Michael D <michael.d.kinney@intel.com>; Liu, Zhiguang
> <zhiguang.liu@intel.com>; devel@edk2.groups.io
> 主题: Re: [edk2-devel] [PATCH v1 2/4] MdePkg: Replace Opcode with the
> corresponding instructions.
>
> Hi Liming,
>
> Yes, and I use version 2.15.05 of the nasm compiler to verify code changes.
> https://www.nasm.us/xdoc/2.15.05/html/nasmdocb.html
>
> Best Regards
> Jason Lou
>
> -----Original Message-----
> From: gaoliming <gaoliming@byosoft.com.cn>
> Sent: Wednesday, December 29, 2021 11:15 AM
> To: Lou, Yun <yun.lou@intel.com>; devel@edk2.groups.io
> Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Liu, Zhiguang
> <zhiguang.liu@intel.com>
> Subject: 回复: [PATCH v1 2/4] MdePkg: Replace Opcode with the
> corresponding instructions.
>
> Jason:
> Does this change depend on new version nasm compiler? Can you provide
> which nasm compiler version is required?
>
> Thanks
> Liming
> > -----邮件原件-----
> > 发件人: Jason <yun.lou@intel.com>
> > 发送时间: 2021年12月29日 10:10
> > 收件人: devel@edk2.groups.io
> > 抄送: Jason Lou <yun.lou@intel.com>; Michael D Kinney
> > <michael.d.kinney@intel.com>; Liming Gao <gaoliming@byosoft.com.cn>;
> > Zhiguang Liu <zhiguang.liu@intel.com>
> > 主题: [PATCH v1 2/4] MdePkg: Replace Opcode with the corresponding
> > instructions.
> >
> > From: Jason Lou <yun.lou@intel.com>
> >
> > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3790
> >
> > Replace Opcode with the corresponding instructions.
> > The code changes have been verified with CompareBuild.py tool, which
> > can be used to compare the results of two different EDK II builds to
> > determine if they generate the same binaries.
> > (the tool link: https://github.com/mdkinney/edk2)
> >
> > Signed-off-by: Jason Lou <yun.lou@intel.com>
> > Cc: Michael D Kinney <michael.d.kinney@intel.com>
> > Cc: Liming Gao <gaoliming@byosoft.com.cn>
> > Cc: Zhiguang Liu <zhiguang.liu@intel.com>
> > ---
> > MdePkg/Library/BaseLib/Ia32/EnablePaging64.nasm | 20
> > ++++++++------------
> > MdePkg/Library/BaseLib/Ia32/LongJump.nasm | 6 +++---
> > MdePkg/Library/BaseLib/Ia32/Monitor.nasm | 4 ++--
> > MdePkg/Library/BaseLib/Ia32/Mwait.nasm | 4 ++--
> > MdePkg/Library/BaseLib/Ia32/RdRand.nasm | 13
> +++++--------
> > MdePkg/Library/BaseLib/Ia32/ReadDr4.nasm | 6 +++---
> > MdePkg/Library/BaseLib/Ia32/ReadDr5.nasm | 6 +++---
> > MdePkg/Library/BaseLib/Ia32/SetJump.nasm | 6 +++---
> > MdePkg/Library/BaseLib/Ia32/WriteDr4.nasm | 6 +++---
> > MdePkg/Library/BaseLib/Ia32/WriteDr5.nasm | 6 +++---
> > MdePkg/Library/BaseLib/X64/DisablePaging64.nasm | 5 ++---
> > MdePkg/Library/BaseLib/X64/LongJump.nasm | 6 +++---
> > MdePkg/Library/BaseLib/X64/Monitor.nasm | 4 ++--
> > MdePkg/Library/BaseLib/X64/Mwait.nasm | 4 ++--
> > MdePkg/Library/BaseLib/X64/RdRand.nasm | 11
> ++++-------
> > MdePkg/Library/BaseLib/X64/ReadDr4.nasm | 4 ++--
> > MdePkg/Library/BaseLib/X64/ReadDr5.nasm | 4 ++--
> > MdePkg/Library/BaseLib/X64/ReadMm0.nasm | 7 ++-----
> > MdePkg/Library/BaseLib/X64/ReadMm1.nasm | 7 ++-----
> > MdePkg/Library/BaseLib/X64/ReadMm2.nasm | 7 ++-----
> > MdePkg/Library/BaseLib/X64/ReadMm3.nasm | 7 ++-----
> > MdePkg/Library/BaseLib/X64/ReadMm4.nasm | 7 ++-----
> > MdePkg/Library/BaseLib/X64/ReadMm5.nasm | 7 ++-----
> > MdePkg/Library/BaseLib/X64/ReadMm6.nasm | 7 ++-----
> > MdePkg/Library/BaseLib/X64/ReadMm7.nasm | 7 ++-----
> > MdePkg/Library/BaseLib/X64/SetJump.nasm | 6 +++---
> > MdePkg/Library/BaseLib/X64/WriteDr4.nasm | 4 ++--
> > MdePkg/Library/BaseLib/X64/WriteDr5.nasm | 4 ++--
> > MdePkg/Library/BaseLib/X64/WriteMm0.nasm | 7 ++-----
> > MdePkg/Library/BaseLib/X64/WriteMm1.nasm | 7 ++-----
> > MdePkg/Library/BaseLib/X64/WriteMm2.nasm | 7 ++-----
> > MdePkg/Library/BaseLib/X64/WriteMm3.nasm | 7 ++-----
> > MdePkg/Library/BaseLib/X64/WriteMm4.nasm | 7 ++-----
> > MdePkg/Library/BaseLib/X64/WriteMm5.nasm | 7 ++-----
> > MdePkg/Library/BaseLib/X64/WriteMm6.nasm | 7 ++-----
> > MdePkg/Library/BaseLib/X64/WriteMm7.nasm | 7 ++-----
> > MdePkg/Library/BaseMemoryLibMmx/X64/CopyMem.nasm | 10
> > +++++-----
> > MdePkg/Library/BaseMemoryLibMmx/X64/SetMem.nasm | 8
> ++++----
> > MdePkg/Library/BaseMemoryLibMmx/X64/SetMem16.nasm | 8
> ++++----
> > MdePkg/Library/BaseMemoryLibMmx/X64/SetMem32.nasm | 10
> > +++++-----
> > MdePkg/Library/BaseMemoryLibMmx/X64/SetMem64.nasm | 6 +++---
> > MdePkg/Library/BaseMemoryLibMmx/X64/ZeroMem.nasm | 8
> ++++----
> > 42 files changed, 116 insertions(+), 175 deletions(-)
> >
> > diff --git a/MdePkg/Library/BaseLib/Ia32/EnablePaging64.nasm
> > b/MdePkg/Library/BaseLib/Ia32/EnablePaging64.nasm
> > index 544e3c3892..492306fd70 100644
> > --- a/MdePkg/Library/BaseLib/Ia32/EnablePaging64.nasm
> > +++ b/MdePkg/Library/BaseLib/Ia32/EnablePaging64.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -44,16 +44,12 @@ ASM_PFX(InternalX86EnablePaging64):
> > mov cr0, eax ; enable paging
> >
> > retf ; topmost 2 dwords hold
> the
> > address
> >
> > .0:
> >
> > - DB 0x67, 0x48 ; 32-bit address size,
> > 64-bit operand size
> >
> > - mov ebx, [esp] ; mov rbx, [esp]
> >
> > - DB 0x67, 0x48
> >
> > - mov ecx, [esp + 8] ; mov rcx, [esp + 8]
> >
> > - DB 0x67, 0x48
> >
> > - mov edx, [esp + 0x10] ; mov rdx, [esp + 10h]
> >
> > - DB 0x67, 0x48
> >
> > - mov esp, [esp + 0x18] ; mov rsp, [esp + 18h]
> >
> > - DB 0x48
> >
> > - add esp, -0x20 ; add rsp, -20h
> >
> > - call ebx ; call rbx
> >
> > +BITS 64
> >
> > + mov rbx, [esp]
> >
> > + mov rcx, [esp + 8]
> >
> > + mov rdx, [esp + 0x10]
> >
> > + mov rsp, [esp + 0x18]
> >
> > + add rsp, -0x20
> >
> > + call rbx
> >
> > hlt ; no one should get here
> >
> >
> >
> > diff --git a/MdePkg/Library/BaseLib/Ia32/LongJump.nasm
> > b/MdePkg/Library/BaseLib/Ia32/LongJump.nasm
> > index f94d10f806..17e215b9cb 100644
> > --- a/MdePkg/Library/BaseLib/Ia32/LongJump.nasm
> > +++ b/MdePkg/Library/BaseLib/Ia32/LongJump.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006 - 2019, Intel Corporation. All rights
> > reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -39,12 +39,12 @@ ASM_PFX(InternalLongJump):
> >
> >
> > mov edx, [esp + 4] ; edx = JumpBuffer
> >
> > mov edx, [edx + 24] ; edx = target SSP
> >
> > - READSSP_EAX
> >
> > + rdsspd eax
> >
> > sub edx, eax ; edx = delta
> >
> > mov eax, edx ; eax = delta
> >
> >
> >
> > shr eax, 2 ; eax = delta/sizeof(UINT32)
> >
> > - INCSSP_EAX
> >
> > + incsspd eax
> >
> >
> >
> > CetDone:
> >
> >
> >
> > diff --git a/MdePkg/Library/BaseLib/Ia32/Monitor.nasm
> > b/MdePkg/Library/BaseLib/Ia32/Monitor.nasm
> > index 28dc0ba70a..145520ce44 100644
> > --- a/MdePkg/Library/BaseLib/Ia32/Monitor.nasm
> > +++ b/MdePkg/Library/BaseLib/Ia32/Monitor.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -31,6 +31,6 @@ ASM_PFX(AsmMonitor):
> > mov eax, [esp + 4]
> >
> > mov ecx, [esp + 8]
> >
> > mov edx, [esp + 12]
> >
> > - DB 0xf, 1, 0xc8 ; monitor
> >
> > + monitor
> >
> > ret
> >
> >
> >
> > diff --git a/MdePkg/Library/BaseLib/Ia32/Mwait.nasm
> > b/MdePkg/Library/BaseLib/Ia32/Mwait.nasm
> > index 3956940cab..f0a6d14f5f 100644
> > --- a/MdePkg/Library/BaseLib/Ia32/Mwait.nasm
> > +++ b/MdePkg/Library/BaseLib/Ia32/Mwait.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -29,6 +29,6 @@ global ASM_PFX(AsmMwait)
> > ASM_PFX(AsmMwait):
> >
> > mov eax, [esp + 4]
> >
> > mov ecx, [esp + 8]
> >
> > - DB 0xf, 1, 0xc9 ; mwait
> >
> > + mwait
> >
> > ret
> >
> >
> >
> > diff --git a/MdePkg/Library/BaseLib/Ia32/RdRand.nasm
> > b/MdePkg/Library/BaseLib/Ia32/RdRand.nasm
> > index e12b8e9611..7a69dc9b0d 100644
> > --- a/MdePkg/Library/BaseLib/Ia32/RdRand.nasm
> > +++ b/MdePkg/Library/BaseLib/Ia32/RdRand.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2015 - 2016, Intel Corporation. All rights
> > reserved.<BR>
> >
> > +; Copyright (c) 2015 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -25,9 +25,8 @@ SECTION .text
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > global ASM_PFX(InternalX86RdRand16)
> >
> > ASM_PFX(InternalX86RdRand16):
> >
> > - ; rdrand ax ; generate a 16 bit RN into ax
> >
> > + rdrand eax ; generate a 16 bit RN into ax
> >
> > ; CF=1 if RN generated ok,
> > otherwise CF=0
> >
> > - db 0xf, 0xc7, 0xf0 ; rdrand r16: "0f c7 /6
> > ModRM:r/m(w)"
> >
> > jc rn16_ok ; jmp if CF=1
> >
> > xor eax, eax ; reg=0 if CF=0
> >
> > ret ; return with failure status
> >
> > @@ -45,9 +44,8 @@ rn16_ok:
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > global ASM_PFX(InternalX86RdRand32)
> >
> > ASM_PFX(InternalX86RdRand32):
> >
> > - ; rdrand eax ; generate a 32 bit RN into eax
> >
> > + rdrand eax ; generate a 32 bit RN into eax
> >
> > ; CF=1 if RN generated ok,
> > otherwise CF=0
> >
> > - db 0xf, 0xc7, 0xf0 ; rdrand r32: "0f c7 /6
> > ModRM:r/m(w)"
> >
> > jc rn32_ok ; jmp if CF=1
> >
> > xor eax, eax ; reg=0 if CF=0
> >
> > ret ; return with failure status
> >
> > @@ -65,14 +63,13 @@ rn32_ok:
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > global ASM_PFX(InternalX86RdRand64)
> >
> > ASM_PFX(InternalX86RdRand64):
> >
> > - ; rdrand eax ; generate a 32 bit RN into eax
> >
> > + rdrand eax ; generate a 32 bit RN into eax
> >
> > ; CF=1 if RN generated ok,
> > otherwise CF=0
> >
> > - db 0xf, 0xc7, 0xf0 ; rdrand r32: "0f c7 /6
> > ModRM:r/m(w)"
> >
> > jnc rn64_ret ; jmp if CF=0
> >
> > mov edx, dword [esp + 4]
> >
> > mov [edx], eax
> >
> >
> >
> > - db 0xf, 0xc7, 0xf0 ; generate another 32 bit RN
> >
> > + rdrand eax ; generate another 32 bit RN
> >
> > jnc rn64_ret ; jmp if CF=0
> >
> > mov [edx + 4], eax
> >
> >
> >
> > diff --git a/MdePkg/Library/BaseLib/Ia32/ReadDr4.nasm
> > b/MdePkg/Library/BaseLib/Ia32/ReadDr4.nasm
> > index 81c681de34..0014720143 100644
> > --- a/MdePkg/Library/BaseLib/Ia32/ReadDr4.nasm
> > +++ b/MdePkg/Library/BaseLib/Ia32/ReadDr4.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -31,8 +31,8 @@ ASM_PFX(AsmReadDr4):
> > ; this register will cause a #UD exception.
> >
> > ;
> >
> > ; MS assembler doesn't support this instruction since no one
> > would
> use
> > it
> >
> > - ; under normal circustances. Here opcode is used.
> >
> > + ; under normal circustances.
> >
> > ;
> >
> > - DB 0xf, 0x21, 0xe0
> >
> > + mov eax, dr4
> >
> > ret
> >
> >
> >
> > diff --git a/MdePkg/Library/BaseLib/Ia32/ReadDr5.nasm
> > b/MdePkg/Library/BaseLib/Ia32/ReadDr5.nasm
> > index e2deacb832..40f48e07e9 100644
> > --- a/MdePkg/Library/BaseLib/Ia32/ReadDr5.nasm
> > +++ b/MdePkg/Library/BaseLib/Ia32/ReadDr5.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -31,8 +31,8 @@ ASM_PFX(AsmReadDr5):
> > ; this register will cause a #UD exception.
> >
> > ;
> >
> > ; MS assembler doesn't support this instruction since no one
> > would
> use
> > it
> >
> > - ; under normal circustances. Here opcode is used.
> >
> > + ; under normal circustances.
> >
> > ;
> >
> > - DB 0xf, 0x21, 0xe8
> >
> > + mov eax, dr5
> >
> > ret
> >
> >
> >
> > diff --git a/MdePkg/Library/BaseLib/Ia32/SetJump.nasm
> > b/MdePkg/Library/BaseLib/Ia32/SetJump.nasm
> > index 364613b5f9..978e1946af 100644
> > --- a/MdePkg/Library/BaseLib/Ia32/SetJump.nasm
> > +++ b/MdePkg/Library/BaseLib/Ia32/SetJump.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006 - 2019, Intel Corporation. All rights
> > reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -46,8 +46,8 @@ ASM_PFX(SetJump):
> > jnc CetDone
> >
> >
> >
> > mov eax, 1
> >
> > - INCSSP_EAX ; to read original SSP
> >
> > - READSSP_EAX
> >
> > + incsspd eax ; to read original SSP
> >
> > + rdsspd eax
> >
> > mov [edx + 0x24], eax ; save SSP
> >
> >
> >
> > CetDone:
> >
> > diff --git a/MdePkg/Library/BaseLib/Ia32/WriteDr4.nasm
> > b/MdePkg/Library/BaseLib/Ia32/WriteDr4.nasm
> > index 0d23fca111..e36678ff24 100644
> > --- a/MdePkg/Library/BaseLib/Ia32/WriteDr4.nasm
> > +++ b/MdePkg/Library/BaseLib/Ia32/WriteDr4.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -32,8 +32,8 @@ ASM_PFX(AsmWriteDr4):
> > ; this register will cause a #UD exception.
> >
> > ;
> >
> > ; MS assembler doesn't support this instruction since no one
> > would
> use
> > it
> >
> > - ; under normal circustances. Here opcode is used.
> >
> > + ; under normal circustances.
> >
> > ;
> >
> > - DB 0xf, 0x23, 0xe0
> >
> > + mov dr4, eax
> >
> > ret
> >
> >
> >
> > diff --git a/MdePkg/Library/BaseLib/Ia32/WriteDr5.nasm
> > b/MdePkg/Library/BaseLib/Ia32/WriteDr5.nasm
> > index bc5f424b8d..2a43ef6b9c 100644
> > --- a/MdePkg/Library/BaseLib/Ia32/WriteDr5.nasm
> > +++ b/MdePkg/Library/BaseLib/Ia32/WriteDr5.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -32,8 +32,8 @@ ASM_PFX(AsmWriteDr5):
> > ; this register will cause a #UD exception.
> >
> > ;
> >
> > ; MS assembler doesn't support this instruction since no one
> > would
> use
> > it
> >
> > - ; under normal circustances. Here opcode is used.
> >
> > + ; under normal circustances.
> >
> > ;
> >
> > - DB 0xf, 0x23, 0xe8
> >
> > + mov dr5, eax
> >
> > ret
> >
> >
> >
> > diff --git a/MdePkg/Library/BaseLib/X64/DisablePaging64.nasm
> > b/MdePkg/Library/BaseLib/X64/DisablePaging64.nasm
> > index c76ed1a76c..55fef56fc4 100644
> > --- a/MdePkg/Library/BaseLib/X64/DisablePaging64.nasm
> > +++ b/MdePkg/Library/BaseLib/X64/DisablePaging64.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006 - 2008, Intel Corporation. All rights
> > reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -51,8 +51,7 @@ ASM_PFX(InternalX86DisablePaging64):
> > sub eax, 4 ; eax <- One slot below
> > transition code on the stack
> >
> > push rcx ; push Cs to stack
> >
> > push r10 ; push address of
> tansition
> > code on stack
> >
> > - DB 0x48 ; prefix to composite
> > "retq" with next "retf"
> >
> > - retf ; Use far return to load CS
> > register from stack
> >
> > + retfq
> >
> >
> >
> > ; Start of transition code
> >
> > .0:
> >
> > diff --git a/MdePkg/Library/BaseLib/X64/LongJump.nasm
> > b/MdePkg/Library/BaseLib/X64/LongJump.nasm
> > index 59f7092169..0cbad70edc 100644
> > --- a/MdePkg/Library/BaseLib/X64/LongJump.nasm
> > +++ b/MdePkg/Library/BaseLib/X64/LongJump.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006 - 2019, Intel Corporation. All rights
> > reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -41,12 +41,12 @@ ASM_PFX(InternalLongJump):
> > push rdx ; save rdx
> >
> >
> >
> > mov rdx, [rcx + 0xF8] ; rdx = target SSP
> >
> > - READSSP_RAX
> >
> > + rdsspq rax
> >
> > sub rdx, rax ; rdx = delta
> >
> > mov rax, rdx ; rax = delta
> >
> >
> >
> > shr rax, 3 ; rax =
> delta/sizeof(UINT64)
> >
> > - INCSSP_RAX
> >
> > + incsspq rax
> >
> >
> >
> > pop rdx ; restore rdx
> >
> > CetDone:
> >
> > diff --git a/MdePkg/Library/BaseLib/X64/Monitor.nasm
> > b/MdePkg/Library/BaseLib/X64/Monitor.nasm
> > index e1ccb83a85..5855bc3522 100644
> > --- a/MdePkg/Library/BaseLib/X64/Monitor.nasm
> > +++ b/MdePkg/Library/BaseLib/X64/Monitor.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -32,6 +32,6 @@ ASM_PFX(AsmMonitor):
> > mov eax, ecx
> >
> > mov ecx, edx
> >
> > mov edx, r8d
> >
> > - DB 0xf, 1, 0xc8 ; monitor
> >
> > + monitor
> >
> > ret
> >
> >
> >
> > diff --git a/MdePkg/Library/BaseLib/X64/Mwait.nasm
> > b/MdePkg/Library/BaseLib/X64/Mwait.nasm
> > index 83fc895491..fc34b6f6f4 100644
> > --- a/MdePkg/Library/BaseLib/X64/Mwait.nasm
> > +++ b/MdePkg/Library/BaseLib/X64/Mwait.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -30,6 +30,6 @@ global ASM_PFX(AsmMwait)
> > ASM_PFX(AsmMwait):
> >
> > mov eax, ecx
> >
> > mov ecx, edx
> >
> > - DB 0xf, 1, 0xc9 ; mwait
> >
> > + mwait
> >
> > ret
> >
> >
> >
> > diff --git a/MdePkg/Library/BaseLib/X64/RdRand.nasm
> > b/MdePkg/Library/BaseLib/X64/RdRand.nasm
> > index 7e7fe99670..8417b4dfb4 100644
> > --- a/MdePkg/Library/BaseLib/X64/RdRand.nasm
> > +++ b/MdePkg/Library/BaseLib/X64/RdRand.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2015 - 2016, Intel Corporation. All rights
> > reserved.<BR>
> >
> > +; Copyright (c) 2015 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -26,9 +26,8 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > global ASM_PFX(InternalX86RdRand16)
> >
> > ASM_PFX(InternalX86RdRand16):
> >
> > - ; rdrand ax ; generate a 16 bit RN into eax,
> >
> > + rdrand eax ; generate a 16 bit RN into eax,
> >
> > ; CF=1 if RN generated ok,
> > otherwise CF=0
> >
> > - db 0xf, 0xc7, 0xf0 ; rdrand r16: "0f c7 /6
> > ModRM:r/m(w)"
> >
> > jc rn16_ok ; jmp if CF=1
> >
> > xor rax, rax ; reg=0 if CF=0
> >
> > ret ; return with failure status
> >
> > @@ -45,9 +44,8 @@ rn16_ok:
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > global ASM_PFX(InternalX86RdRand32)
> >
> > ASM_PFX(InternalX86RdRand32):
> >
> > - ; rdrand eax ; generate a 32 bit RN into eax,
> >
> > + rdrand eax ; generate a 32 bit RN into eax,
> >
> > ; CF=1 if RN generated ok,
> > otherwise CF=0
> >
> > - db 0xf, 0xc7, 0xf0 ; rdrand r32: "0f c7 /6
> > ModRM:r/m(w)"
> >
> > jc rn32_ok ; jmp if CF=1
> >
> > xor rax, rax ; reg=0 if CF=0
> >
> > ret ; return with failure status
> >
> > @@ -64,9 +62,8 @@ rn32_ok:
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > global ASM_PFX(InternalX86RdRand64)
> >
> > ASM_PFX(InternalX86RdRand64):
> >
> > - ; rdrand rax ; generate a 64 bit RN into rax,
> >
> > + rdrand rax ; generate a 64 bit RN into rax,
> >
> > ; CF=1 if RN generated ok,
> > otherwise CF=0
> >
> > - db 0x48, 0xf, 0xc7, 0xf0 ; rdrand r64: "REX.W + 0f c7 /6
> > ModRM:r/m(w)"
> >
> > jc rn64_ok ; jmp if CF=1
> >
> > xor rax, rax ; reg=0 if CF=0
> >
> > ret ; return with failure status
> >
> > diff --git a/MdePkg/Library/BaseLib/X64/ReadDr4.nasm
> > b/MdePkg/Library/BaseLib/X64/ReadDr4.nasm
> > index 82c0a9a588..ea131c9fc3 100644
> > --- a/MdePkg/Library/BaseLib/X64/ReadDr4.nasm
> > +++ b/MdePkg/Library/BaseLib/X64/ReadDr4.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -31,6 +31,6 @@ ASM_PFX(AsmReadDr4):
> > ; There's no obvious reason to access this register, since it's
> aliased to
> >
> > ; DR7 when DE=0 or an exception generated when DE=1
> >
> > ;
> >
> > - DB 0xf, 0x21, 0xe0
> >
> > + mov rax, dr4
> >
> > ret
> >
> >
> >
> > diff --git a/MdePkg/Library/BaseLib/X64/ReadDr5.nasm
> > b/MdePkg/Library/BaseLib/X64/ReadDr5.nasm
> > index c309c66dfe..10aefc8d28 100644
> > --- a/MdePkg/Library/BaseLib/X64/ReadDr5.nasm
> > +++ b/MdePkg/Library/BaseLib/X64/ReadDr5.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -31,6 +31,6 @@ ASM_PFX(AsmReadDr5):
> > ; There's no obvious reason to access this register, since it's
> aliased to
> >
> > ; DR7 when DE=0 or an exception generated when DE=1
> >
> > ;
> >
> > - DB 0xf, 0x21, 0xe8
> >
> > + mov rax, dr5
> >
> > ret
> >
> >
> >
> > diff --git a/MdePkg/Library/BaseLib/X64/ReadMm0.nasm
> > b/MdePkg/Library/BaseLib/X64/ReadMm0.nasm
> > index 615721b6aa..29d284c3b1 100644
> > --- a/MdePkg/Library/BaseLib/X64/ReadMm0.nasm
> > +++ b/MdePkg/Library/BaseLib/X64/ReadMm0.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -27,9 +27,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > global ASM_PFX(AsmReadMm0)
> >
> > ASM_PFX(AsmReadMm0):
> >
> > - ;
> >
> > - ; 64-bit MASM doesn't support MMX instructions, so use opcode here
> >
> > - ;
> >
> > - DB 0x48, 0xf, 0x7e, 0xc0
> >
> > + movq rax, mm0
> >
> > ret
> >
> >
> >
> > diff --git a/MdePkg/Library/BaseLib/X64/ReadMm1.nasm
> > b/MdePkg/Library/BaseLib/X64/ReadMm1.nasm
> > index 7b27393490..6e0b9bba29 100644
> > --- a/MdePkg/Library/BaseLib/X64/ReadMm1.nasm
> > +++ b/MdePkg/Library/BaseLib/X64/ReadMm1.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -27,9 +27,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > global ASM_PFX(AsmReadMm1)
> >
> > ASM_PFX(AsmReadMm1):
> >
> > - ;
> >
> > - ; 64-bit MASM doesn't support MMX instructions, so use opcode here
> >
> > - ;
> >
> > - DB 0x48, 0xf, 0x7e, 0xc8
> >
> > + movq rax, mm1
> >
> > ret
> >
> >
> >
> > diff --git a/MdePkg/Library/BaseLib/X64/ReadMm2.nasm
> > b/MdePkg/Library/BaseLib/X64/ReadMm2.nasm
> > index c654b91a7a..7c7d086c4f 100644
> > --- a/MdePkg/Library/BaseLib/X64/ReadMm2.nasm
> > +++ b/MdePkg/Library/BaseLib/X64/ReadMm2.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -27,9 +27,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > global ASM_PFX(AsmReadMm2)
> >
> > ASM_PFX(AsmReadMm2):
> >
> > - ;
> >
> > - ; 64-bit MASM doesn't support MMX instructions, so use opcode here
> >
> > - ;
> >
> > - DB 0x48, 0xf, 0x7e, 0xd0
> >
> > + movq rax, mm2
> >
> > ret
> >
> >
> >
> > diff --git a/MdePkg/Library/BaseLib/X64/ReadMm3.nasm
> > b/MdePkg/Library/BaseLib/X64/ReadMm3.nasm
> > index 88d51c0781..ecaea83c8f 100644
> > --- a/MdePkg/Library/BaseLib/X64/ReadMm3.nasm
> > +++ b/MdePkg/Library/BaseLib/X64/ReadMm3.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -27,9 +27,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > global ASM_PFX(AsmReadMm3)
> >
> > ASM_PFX(AsmReadMm3):
> >
> > - ;
> >
> > - ; 64-bit MASM doesn't support MMX instructions, so use opcode here
> >
> > - ;
> >
> > - DB 0x48, 0xf, 0x7e, 0xd8
> >
> > + movq rax, mm3
> >
> > ret
> >
> >
> >
> > diff --git a/MdePkg/Library/BaseLib/X64/ReadMm4.nasm
> > b/MdePkg/Library/BaseLib/X64/ReadMm4.nasm
> > index 4252d20bb1..63aed0911b 100644
> > --- a/MdePkg/Library/BaseLib/X64/ReadMm4.nasm
> > +++ b/MdePkg/Library/BaseLib/X64/ReadMm4.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -27,9 +27,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > global ASM_PFX(AsmReadMm4)
> >
> > ASM_PFX(AsmReadMm4):
> >
> > - ;
> >
> > - ; 64-bit MASM doesn't support MMX instructions, so use opcode here
> >
> > - ;
> >
> > - DB 0x48, 0xf, 0x7e, 0xe0
> >
> > + movq rax, mm4
> >
> > ret
> >
> >
> >
> > diff --git a/MdePkg/Library/BaseLib/X64/ReadMm5.nasm
> > b/MdePkg/Library/BaseLib/X64/ReadMm5.nasm
> > index d8f530dec8..f6b7b48536 100644
> > --- a/MdePkg/Library/BaseLib/X64/ReadMm5.nasm
> > +++ b/MdePkg/Library/BaseLib/X64/ReadMm5.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -27,9 +27,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > global ASM_PFX(AsmReadMm5)
> >
> > ASM_PFX(AsmReadMm5):
> >
> > - ;
> >
> > - ; 64-bit MASM doesn't support MMX instructions, so use opcode here
> >
> > - ;
> >
> > - DB 0x48, 0xf, 0x7e, 0xe8
> >
> > + movq rax, mm5
> >
> > ret
> >
> >
> >
> > diff --git a/MdePkg/Library/BaseLib/X64/ReadMm6.nasm
> > b/MdePkg/Library/BaseLib/X64/ReadMm6.nasm
> > index 6f6883c2b6..ff8d1de80c 100644
> > --- a/MdePkg/Library/BaseLib/X64/ReadMm6.nasm
> > +++ b/MdePkg/Library/BaseLib/X64/ReadMm6.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -27,9 +27,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > global ASM_PFX(AsmReadMm6)
> >
> > ASM_PFX(AsmReadMm6):
> >
> > - ;
> >
> > - ; 64-bit MASM doesn't support MMX instructions, so use opcode here
> >
> > - ;
> >
> > - DB 0x48, 0xf, 0x7e, 0xf0
> >
> > + movq rax, mm6
> >
> > ret
> >
> >
> >
> > diff --git a/MdePkg/Library/BaseLib/X64/ReadMm7.nasm
> > b/MdePkg/Library/BaseLib/X64/ReadMm7.nasm
> > index 573f15dfc8..17b0e7d2fb 100644
> > --- a/MdePkg/Library/BaseLib/X64/ReadMm7.nasm
> > +++ b/MdePkg/Library/BaseLib/X64/ReadMm7.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -27,9 +27,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > global ASM_PFX(AsmReadMm7)
> >
> > ASM_PFX(AsmReadMm7):
> >
> > - ;
> >
> > - ; 64-bit MASM doesn't support MMX instructions, so use opcode here
> >
> > - ;
> >
> > - DB 0x48, 0xf, 0x7e, 0xf8
> >
> > + movq rax, mm7
> >
> > ret
> >
> >
> >
> > diff --git a/MdePkg/Library/BaseLib/X64/SetJump.nasm
> > b/MdePkg/Library/BaseLib/X64/SetJump.nasm
> > index 5a68396eec..b15a7c5a65 100644
> > --- a/MdePkg/Library/BaseLib/X64/SetJump.nasm
> > +++ b/MdePkg/Library/BaseLib/X64/SetJump.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006 - 2019, Intel Corporation. All rights
> > reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -48,8 +48,8 @@ ASM_PFX(SetJump):
> > jnc CetDone
> >
> >
> >
> > mov rax, 1
> >
> > - INCSSP_RAX ; to read original SSP
> >
> > - READSSP_RAX
> >
> > + incsspq rax ; to read original SSP
> >
> > + rdsspq rax
> >
> > mov [rcx + 0xF8], rax ; save SSP
> >
> >
> >
> > CetDone:
> >
> > diff --git a/MdePkg/Library/BaseLib/X64/WriteDr4.nasm
> > b/MdePkg/Library/BaseLib/X64/WriteDr4.nasm
> > index c4b12c9e92..16765a6c08 100644
> > --- a/MdePkg/Library/BaseLib/X64/WriteDr4.nasm
> > +++ b/MdePkg/Library/BaseLib/X64/WriteDr4.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -31,7 +31,7 @@ ASM_PFX(AsmWriteDr4):
> > ; There's no obvious reason to access this register, since it's
> aliased to
> >
> > ; DR6 when DE=0 or an exception generated when DE=1
> >
> > ;
> >
> > - DB 0xf, 0x23, 0xe1
> >
> > + mov dr4, rcx
> >
> > mov rax, rcx
> >
> > ret
> >
> >
> >
> > diff --git a/MdePkg/Library/BaseLib/X64/WriteDr5.nasm
> > b/MdePkg/Library/BaseLib/X64/WriteDr5.nasm
> > index 986a4a95d9..2161bed0be 100644
> > --- a/MdePkg/Library/BaseLib/X64/WriteDr5.nasm
> > +++ b/MdePkg/Library/BaseLib/X64/WriteDr5.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006 - 2008, Intel Corporation. All rights
> > reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -31,7 +31,7 @@ ASM_PFX(AsmWriteDr5):
> > ; There's no obvious reason to access this register, since it's
> aliased to
> >
> > ; DR7 when DE=0 or an exception generated when DE=1
> >
> > ;
> >
> > - DB 0xf, 0x23, 0xe9
> >
> > + mov dr5, rcx
> >
> > mov rax, rcx
> >
> > ret
> >
> >
> >
> > diff --git a/MdePkg/Library/BaseLib/X64/WriteMm0.nasm
> > b/MdePkg/Library/BaseLib/X64/WriteMm0.nasm
> > index 3f03529edf..028d42c2be 100644
> > --- a/MdePkg/Library/BaseLib/X64/WriteMm0.nasm
> > +++ b/MdePkg/Library/BaseLib/X64/WriteMm0.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -27,9 +27,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > global ASM_PFX(AsmWriteMm0)
> >
> > ASM_PFX(AsmWriteMm0):
> >
> > - ;
> >
> > - ; 64-bit MASM doesn't support MMX instructions, so use opcode here
> >
> > - ;
> >
> > - DB 0x48, 0xf, 0x6e, 0xc1
> >
> > + movq mm0, rcx
> >
> > ret
> >
> >
> >
> > diff --git a/MdePkg/Library/BaseLib/X64/WriteMm1.nasm
> > b/MdePkg/Library/BaseLib/X64/WriteMm1.nasm
> > index f552d40716..cc98e6bd36 100644
> > --- a/MdePkg/Library/BaseLib/X64/WriteMm1.nasm
> > +++ b/MdePkg/Library/BaseLib/X64/WriteMm1.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -27,9 +27,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > global ASM_PFX(AsmWriteMm1)
> >
> > ASM_PFX(AsmWriteMm1):
> >
> > - ;
> >
> > - ; 64-bit MASM doesn't support MMX instructions, so use opcode here
> >
> > - ;
> >
> > - DB 0x48, 0xf, 0x6e, 0xc9
> >
> > + movq mm1, rcx
> >
> > ret
> >
> >
> >
> > diff --git a/MdePkg/Library/BaseLib/X64/WriteMm2.nasm
> > b/MdePkg/Library/BaseLib/X64/WriteMm2.nasm
> > index 1bd176ced9..2450f955a4 100644
> > --- a/MdePkg/Library/BaseLib/X64/WriteMm2.nasm
> > +++ b/MdePkg/Library/BaseLib/X64/WriteMm2.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -27,9 +27,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > global ASM_PFX(AsmWriteMm2)
> >
> > ASM_PFX(AsmWriteMm2):
> >
> > - ;
> >
> > - ; 64-bit MASM doesn't support MMX instructions, so use opcode here
> >
> > - ;
> >
> > - DB 0x48, 0xf, 0x6e, 0xd1
> >
> > + movq mm2, rcx
> >
> > ret
> >
> >
> >
> > diff --git a/MdePkg/Library/BaseLib/X64/WriteMm3.nasm
> > b/MdePkg/Library/BaseLib/X64/WriteMm3.nasm
> > index 403f140736..8ff3a24ea0 100644
> > --- a/MdePkg/Library/BaseLib/X64/WriteMm3.nasm
> > +++ b/MdePkg/Library/BaseLib/X64/WriteMm3.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -27,9 +27,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > global ASM_PFX(AsmWriteMm3)
> >
> > ASM_PFX(AsmWriteMm3):
> >
> > - ;
> >
> > - ; 64-bit MASM doesn't support MMX instructions, so use opcode here
> >
> > - ;
> >
> > - DB 0x48, 0xf, 0x6e, 0xd9
> >
> > + movq mm3, rcx
> >
> > ret
> >
> >
> >
> > diff --git a/MdePkg/Library/BaseLib/X64/WriteMm4.nasm
> > b/MdePkg/Library/BaseLib/X64/WriteMm4.nasm
> > index d99709d495..d5dd4f8667 100644
> > --- a/MdePkg/Library/BaseLib/X64/WriteMm4.nasm
> > +++ b/MdePkg/Library/BaseLib/X64/WriteMm4.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -27,9 +27,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > global ASM_PFX(AsmWriteMm4)
> >
> > ASM_PFX(AsmWriteMm4):
> >
> > - ;
> >
> > - ; 64-bit MASM doesn't support MMX instructions, so use opcode here
> >
> > - ;
> >
> > - DB 0x48, 0xf, 0x6e, 0xe1
> >
> > + movq mm4, rcx
> >
> > ret
> >
> >
> >
> > diff --git a/MdePkg/Library/BaseLib/X64/WriteMm5.nasm
> > b/MdePkg/Library/BaseLib/X64/WriteMm5.nasm
> > index 0467ac4220..d3ad74d7ae 100644
> > --- a/MdePkg/Library/BaseLib/X64/WriteMm5.nasm
> > +++ b/MdePkg/Library/BaseLib/X64/WriteMm5.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -27,9 +27,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > global ASM_PFX(AsmWriteMm5)
> >
> > ASM_PFX(AsmWriteMm5):
> >
> > - ;
> >
> > - ; 64-bit MASM doesn't support MMX instructions, so use opcode here
> >
> > - ;
> >
> > - DB 0x48, 0xf, 0x6e, 0xe9
> >
> > + movq mm5, rcx
> >
> > ret
> >
> >
> >
> > diff --git a/MdePkg/Library/BaseLib/X64/WriteMm6.nasm
> > b/MdePkg/Library/BaseLib/X64/WriteMm6.nasm
> > index 6d2e5eb8fb..441c0f636e 100644
> > --- a/MdePkg/Library/BaseLib/X64/WriteMm6.nasm
> > +++ b/MdePkg/Library/BaseLib/X64/WriteMm6.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -27,9 +27,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > global ASM_PFX(AsmWriteMm6)
> >
> > ASM_PFX(AsmWriteMm6):
> >
> > - ;
> >
> > - ; 64-bit MASM doesn't support MMX instructions, so use opcode here
> >
> > - ;
> >
> > - DB 0x48, 0xf, 0x6e, 0xf1
> >
> > + movq mm6, rcx
> >
> > ret
> >
> >
> >
> > diff --git a/MdePkg/Library/BaseLib/X64/WriteMm7.nasm
> > b/MdePkg/Library/BaseLib/X64/WriteMm7.nasm
> > index de72adf685..c98292e65f 100644
> > --- a/MdePkg/Library/BaseLib/X64/WriteMm7.nasm
> > +++ b/MdePkg/Library/BaseLib/X64/WriteMm7.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -27,9 +27,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > global ASM_PFX(AsmWriteMm7)
> >
> > ASM_PFX(AsmWriteMm7):
> >
> > - ;
> >
> > - ; 64-bit MASM doesn't support MMX instructions, so use opcode here
> >
> > - ;
> >
> > - DB 0x48, 0xf, 0x6e, 0xf9
> >
> > + movq mm7, rcx
> >
> > ret
> >
> >
> >
> > diff --git a/MdePkg/Library/BaseMemoryLibMmx/X64/CopyMem.nasm
> > b/MdePkg/Library/BaseMemoryLibMmx/X64/CopyMem.nasm
> > index 5769c00bf9..139f3b6fa7 100644
> > --- a/MdePkg/Library/BaseMemoryLibMmx/X64/CopyMem.nasm
> > +++ b/MdePkg/Library/BaseMemoryLibMmx/X64/CopyMem.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -44,15 +44,15 @@ ASM_PFX(InternalMemCopyMem):
> > and r8, 7
> >
> > shr rcx, 3 ; rcx <- # of Qwords to
> copy
> >
> > jz @CopyBytes
> >
> > - DB 0x49, 0xf, 0x7e, 0xc2 ; movd r10, mm0 (Save
> mm0
> > in r10)
> >
> > + movq r10, mm0
> >
> > .1:
> >
> > - DB 0xf, 0x6f, 0x6 ; movd mm0, [rsi]
> >
> > - DB 0xf, 0xe7, 0x7 ; movntq [rdi], mm0
> >
> > + movq mm0, [rsi]
> >
> > + movntq [rdi], mm0
> >
> > add rsi, 8
> >
> > add rdi, 8
> >
> > loop .1
> >
> > mfence
> >
> > - DB 0x49, 0xf, 0x6e, 0xc2 ; movd mm0, r10 (Restore
> > mm0)
> >
> > + movq mm0, r10
> >
> > jmp @CopyBytes
> >
> > @CopyBackward:
> >
> > mov rsi, r9 ; rsi <- End of Source
> >
> > diff --git a/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem.nasm
> > b/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem.nasm
> > index 450113ba84..71df7c1121 100644
> > --- a/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem.nasm
> > +++ b/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -32,16 +32,16 @@ ASM_PFX(InternalMemSetMem):
> > push rdi
> >
> > mov rax, r8
> >
> > mov ah, al
> >
> > - DB 0x48, 0xf, 0x6e, 0xc0 ; movd mm0, rax
> >
> > + movq mm0, rax
> >
> > mov r8, rcx
> >
> > mov rdi, r8 ; rdi <- Buffer
> >
> > mov rcx, rdx
> >
> > and edx, 7
> >
> > shr rcx, 3
> >
> > jz @SetBytes
> >
> > - DB 0xf, 0x70, 0xC0, 0x0 ; pshufw mm0, mm0, 0h
> >
> > + pshufw mm0, mm0, 0
> >
> > .0:
> >
> > - DB 0xf, 0xe7, 0x7 ; movntq [rdi], mm0
> >
> > + movntq [rdi], mm0
> >
> > add rdi, 8
> >
> > loop .0
> >
> > mfence
> >
> > diff --git a/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem16.nasm
> > b/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem16.nasm
> > index 4e1f4be2b4..5092e4db15 100644
> > --- a/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem16.nasm
> > +++ b/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem16.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -31,16 +31,16 @@ global ASM_PFX(InternalMemSetMem16)
> > ASM_PFX(InternalMemSetMem16):
> >
> > push rdi
> >
> > mov rax, r8
> >
> > - DB 0x48, 0xf, 0x6e, 0xc0 ; movd mm0, rax
> >
> > + movq mm0, rax
> >
> > mov r8, rcx
> >
> > mov rdi, r8
> >
> > mov rcx, rdx
> >
> > and edx, 3
> >
> > shr rcx, 2
> >
> > jz @SetWords
> >
> > - DB 0xf, 0x70, 0xC0, 0x0 ; pshufw mm0, mm0, 0h
> >
> > + pshufw mm0, mm0, 0
> >
> > .0:
> >
> > - DB 0xf, 0xe7, 0x7 ; movntq [rdi], mm0
> >
> > + movntq [rdi], mm0
> >
> > add rdi, 8
> >
> > loop .0
> >
> > mfence
> >
> > diff --git a/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem32.nasm
> > b/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem32.nasm
> > index b3a7385897..ed2f80d30d 100644
> > --- a/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem32.nasm
> > +++ b/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem32.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -28,20 +28,20 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > global ASM_PFX(InternalMemSetMem32)
> >
> > ASM_PFX(InternalMemSetMem32):
> >
> > - DB 0x49, 0xf, 0x6e, 0xc0 ; movd mm0, r8 (Value)
> >
> > + movq mm0, r8
> >
> > mov rax, rcx ; rax <- Buffer
> >
> > xchg rcx, rdx ; rcx <- Count rdx <-
> Buffer
> >
> > shr rcx, 1 ; rcx <- # of qwords to set
> >
> > jz @SetDwords
> >
> > - DB 0xf, 0x70, 0xC0, 0x44 ; pshufw mm0, mm0, 44h
> >
> > + pshufw mm0, mm0, 44h
> >
> > .0:
> >
> > - DB 0xf, 0xe7, 0x2 ; movntq [rdx], mm0
> >
> > + movntq [rdx], mm0
> >
> > lea rdx, [rdx + 8] ; use "lea" to avoid flag
> changes
> >
> > loop .0
> >
> > mfence
> >
> > @SetDwords:
> >
> > jnc .1
> >
> > - DB 0xf, 0x7e, 0x2 ; movd [rdx], mm0
> >
> > + movd [rdx], mm0
> >
> > .1:
> >
> > ret
> >
> >
> >
> > diff --git a/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem64.nasm
> > b/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem64.nasm
> > index f517e1d23a..b3f75b1636 100644
> > --- a/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem64.nasm
> > +++ b/MdePkg/Library/BaseMemoryLibMmx/X64/SetMem64.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -28,11 +28,11 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > global ASM_PFX(InternalMemSetMem64)
> >
> > ASM_PFX(InternalMemSetMem64):
> >
> > - DB 0x49, 0xf, 0x6e, 0xc0 ; movd mm0, r8 (Value)
> >
> > + movq mm0, r8
> >
> > mov rax, rcx ; rax <- Buffer
> >
> > xchg rcx, rdx ; rcx <- Count
> >
> > .0:
> >
> > - DB 0xf, 0xe7, 0x2 ; movntq [rdx], mm0
> >
> > + movntq [rdx], mm0
> >
> > add rdx, 8
> >
> > loop .0
> >
> > mfence
> >
> > diff --git a/MdePkg/Library/BaseMemoryLibMmx/X64/ZeroMem.nasm
> > b/MdePkg/Library/BaseMemoryLibMmx/X64/ZeroMem.nasm
> > index 2a85f15b55..2865d26b34 100644
> > --- a/MdePkg/Library/BaseMemoryLibMmx/X64/ZeroMem.nasm
> > +++ b/MdePkg/Library/BaseMemoryLibMmx/X64/ZeroMem.nasm
> > @@ -1,6 +1,6 @@
> >
> ;---------------------------------------------------------------------------
> ---
> >
> > ;
> >
> > -; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
> >
> > +; Copyright (c) 2006 - 2021, Intel Corporation. All rights
> > +reserved.<BR>
> >
> > ; SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > ;
> >
> > ; Module Name:
> >
> > @@ -34,12 +34,12 @@ ASM_PFX(InternalMemZeroMem):
> > and edx, 7
> >
> > shr rcx, 3
> >
> > jz @ZeroBytes
> >
> > - DB 0xf, 0xef, 0xc0 ; pxor mm0, mm0
> >
> > + pxor mm0, mm0
> >
> > .0:
> >
> > - DB 0xf, 0xe7, 7 ; movntq [rdi], mm0
> >
> > + movntq [rdi], mm0
> >
> > add rdi, 8
> >
> > loop .0
> >
> > - DB 0xf, 0xae, 0xf0 ; mfence
> >
> > + mfence
> >
> > @ZeroBytes:
> >
> > xor eax, eax
> >
> > mov ecx, edx
> >
> > --
> > 2.28.0.windows.1
>
>
>
>
>
>
>
next prev parent reply other threads:[~2022-01-04 3:15 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-29 2:10 [PATCH v1 1/4] MdeModulePkg: Replace Opcode with the corresponding instructions Jason Lou
2021-12-29 2:10 ` [PATCH v1 2/4] MdePkg: " Jason Lou
2021-12-29 3:14 ` 回复: " gaoliming
2021-12-29 3:51 ` Jason Lou
2022-01-04 3:14 ` gaoliming [this message]
2022-01-05 7:43 ` [edk2-devel] " Jason Lou
2021-12-29 2:10 ` [PATCH v1 3/4] SourceLevelDebugPkg: " Jason Lou
2021-12-29 2:10 ` [PATCH v1 4/4] UefiCpuPkg: " Jason Lou
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='011701d80119$2d01c310$87054930$@byosoft.com.cn' \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox