public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Jason Lou" <yun.lou@intel.com>
To: "Gao, Liming" <gaoliming@byosoft.com.cn>
Cc: "Kinney, Michael D" <michael.d.kinney@intel.com>,
	"Liu, Zhiguang" <zhiguang.liu@intel.com>,
	"devel@edk2.groups.io" <devel@edk2.groups.io>
Subject: Re: [PATCH v1 2/4] MdePkg: Replace Opcode with the corresponding instructions.
Date: Wed, 29 Dec 2021 03:51:27 +0000	[thread overview]
Message-ID: <BYAPR11MB343173A115F1BA9671160DE6F5449@BYAPR11MB3431.namprd11.prod.outlook.com> (raw)
In-Reply-To: <012e01d7fc62$3e29f290$ba7dd7b0$@byosoft.com.cn>

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




  reply	other threads:[~2021-12-29  3:51 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 [this message]
2022-01-04  3:14       ` 回复: [edk2-devel] " gaoliming
2022-01-05  7:43         ` 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=BYAPR11MB343173A115F1BA9671160DE6F5449@BYAPR11MB3431.namprd11.prod.outlook.com \
    --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