回复: [edk2-devel] [PATCH v2 2/6] MdePkg: Replace Opcode with the corresponding instructions.


gaoliming
 

Jason:
Thanks for your update. Reviewed-by: Liming Gao <gaoliming@...>
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@...>; Michael D Kinney
<michael.d.kinney@...>; Liming Gao <gaoliming@...>;
Zhiguang Liu <zhiguang.liu@...>
主题: [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@...>
Cc: Michael D Kinney <michael.d.kinney@...>
Cc: Liming Gao <gaoliming@...>
Cc: Zhiguang Liu <zhiguang.liu@...>
---
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@...]
-=-=-=-=-=-=

Join devel@edk2.groups.io to automatically receive all group messages.