From: "gaoliming" <gaoliming@byosoft.com.cn>
To: <devel@edk2.groups.io>, <yun.lou@intel.com>
Cc: "'Michael D Kinney'" <michael.d.kinney@intel.com>,
"'Zhiguang Liu'" <zhiguang.liu@intel.com>
Subject: 回复: [edk2-devel] [PATCH v2 2/6] MdePkg: Replace Opcode with the corresponding instructions.
Date: Tue, 11 Jan 2022 08:55:27 +0800 [thread overview]
Message-ID: <01be01d80685$ec7b9a10$c572ce30$@byosoft.com.cn> (raw)
In-Reply-To: <20220110151253.3848-2-yun.lou@intel.com>
Jason:
Thanks for your update. Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
for this patch set.
Thanks
Liming
> -----邮件原件-----
> 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Jason Lou
> 发送时间: 2022年1月10日 23:13
> 收件人: devel@edk2.groups.io
> 抄送: Jason <yun.lou@intel.com>; Michael D Kinney
> <michael.d.kinney@intel.com>; Liming Gao <gaoliming@byosoft.com.cn>;
> Zhiguang Liu <zhiguang.liu@intel.com>
> 主题: [edk2-devel] [PATCH v2 2/6] MdePkg: Replace Opcode with the
> corresponding instructions.
>
> 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.
> (tool link: https://github.com/mdkinney/edk2/tree/sandbox/CompareBuild)
>
> 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..ef11458077 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 - 2022, 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..6c13dfe307 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 - 2022, 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..70dbe66e27 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 - 2022, 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..2d36a97df6 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 - 2022, 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..d818b6ef55 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 - 2022, 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..1c312b670d 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 - 2022, 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..07a1b44a00 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 - 2022, 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..2577373241 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 - 2022, 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..b8479b39f7 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 - 2022, 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..3545561025 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 - 2022, 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..200c408d9a 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 - 2022, 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..2002f65cba 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 - 2022, 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..210037d402 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 - 2022, 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..c8ad59588b 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 - 2022, 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..73479be8d3 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 - 2022, 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..90b2172cee 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 - 2022, 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..c1143f4498 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 - 2022, 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..e64b2c7882 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 - 2022, 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..bec3c71207 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 - 2022, 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..4c880697cb 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 - 2022, 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..cf81e5a7ab 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 - 2022, 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..17ba364e32 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 - 2022, 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..f1354dd68c 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 - 2022, 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..9d5a287218 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 - 2022, 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..ae15f24d8b 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 - 2022, 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..5943a5ebe5 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 - 2022, 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..5e4d96015e 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 - 2022, 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..d5d4e2f324 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 - 2022, 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..e6b5a0fc33 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 - 2022, 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..414c6af6da 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 - 2022, 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..525740342a 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 - 2022, 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..abf11bfb17 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 - 2022, 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..7cbd25e70a 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 - 2022, 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..9edfd0db83 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 - 2022, 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..4555563a55 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 - 2022, 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..4ef0eb5271 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 - 2022, 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..3b336c6bdf 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 - 2022, 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..af584e3d34 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 - 2022, 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..7a63a1c50b 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 - 2022, 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..ab5f954826 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 - 2022, 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..fcc44294a8 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 - 2022, 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..8b02eeb732 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 - 2022, 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
>
>
>
> -=-=-=-=-=-=
> Groups.io Links: You receive all messages sent to this group.
> View/Reply Online (#85475): https://edk2.groups.io/g/devel/message/85475
> Mute This Topic: https://groups.io/mt/88325168/4905953
> Group Owner: devel+owner@edk2.groups.io
> Unsubscribe: https://edk2.groups.io/g/devel/unsub
> [gaoliming@byosoft.com.cn]
> -=-=-=-=-=-=
>
next prev parent reply other threads:[~2022-01-11 0:55 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-10 15:12 [PATCH v2 1/6] MdeModulePkg: Replace Opcode with the corresponding instructions Jason Lou
2022-01-10 15:12 ` [PATCH v2 2/6] MdePkg: " Jason Lou
2022-01-11 0:55 ` gaoliming [this message]
2022-01-10 15:12 ` [PATCH v2 3/6] SourceLevelDebugPkg: " Jason Lou
2022-01-11 1:03 ` Wu, Hao A
2022-01-10 15:12 ` [PATCH v2 4/6] UefiCpuPkg: " Jason Lou
2022-02-10 5:35 ` Ni, Ray
2022-01-10 15:12 ` [PATCH v2 5/6] MdePkg: Remove the macro definitions regarding Opcode Jason Lou
2022-01-10 15:12 ` [PATCH v2 6/6] BaseTools: Upgrade the version of NASM tool Jason Lou
2022-01-17 0:49 ` Yuwei Chen
2022-02-10 5:36 ` [PATCH v2 1/6] MdeModulePkg: Replace Opcode with the corresponding instructions Ni, Ray
2022-02-10 7:44 ` 回复: [edk2-devel] " gaoliming
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='01be01d80685$ec7b9a10$c572ce30$@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