summaryrefslogtreecommitdiff
path: root/MdePkg/Library/BaseLib/X64
diff options
context:
space:
mode:
Diffstat (limited to 'MdePkg/Library/BaseLib/X64')
-rw-r--r--MdePkg/Library/BaseLib/X64/DisablePaging64.asm11
-rw-r--r--MdePkg/Library/BaseLib/X64/FxRestore.asm7
-rw-r--r--MdePkg/Library/BaseLib/X64/FxSave.asm7
-rw-r--r--MdePkg/Library/BaseLib/X64/LongJump.asm8
-rw-r--r--MdePkg/Library/BaseLib/X64/ReadCs.asm2
-rw-r--r--MdePkg/Library/BaseLib/X64/ReadDs.asm3
-rw-r--r--MdePkg/Library/BaseLib/X64/ReadEs.asm2
-rw-r--r--MdePkg/Library/BaseLib/X64/ReadFs.asm2
-rw-r--r--MdePkg/Library/BaseLib/X64/ReadGdtr.asm7
-rw-r--r--MdePkg/Library/BaseLib/X64/ReadGs.asm2
-rw-r--r--MdePkg/Library/BaseLib/X64/ReadIdtr.asm7
-rw-r--r--MdePkg/Library/BaseLib/X64/ReadMm0.asm2
-rw-r--r--MdePkg/Library/BaseLib/X64/ReadMm1.asm2
-rw-r--r--MdePkg/Library/BaseLib/X64/ReadMm2.asm2
-rw-r--r--MdePkg/Library/BaseLib/X64/ReadMm3.asm2
-rw-r--r--MdePkg/Library/BaseLib/X64/ReadMm4.asm2
-rw-r--r--MdePkg/Library/BaseLib/X64/ReadMm5.asm2
-rw-r--r--MdePkg/Library/BaseLib/X64/ReadMm6.asm2
-rw-r--r--MdePkg/Library/BaseLib/X64/ReadMm7.asm2
-rw-r--r--MdePkg/Library/BaseLib/X64/ReadMsr32.asm38
-rw-r--r--MdePkg/Library/BaseLib/X64/ReadMsr64.asm6
-rw-r--r--MdePkg/Library/BaseLib/X64/ReadPmc.asm7
-rw-r--r--MdePkg/Library/BaseLib/X64/ReadSs.asm2
-rw-r--r--MdePkg/Library/BaseLib/X64/ReadTsc.asm4
-rw-r--r--MdePkg/Library/BaseLib/X64/SetJump.asm7
-rw-r--r--MdePkg/Library/BaseLib/X64/Thunk16.asm21
-rw-r--r--MdePkg/Library/BaseLib/X64/WriteCr0.asm3
-rw-r--r--MdePkg/Library/BaseLib/X64/WriteCr2.asm3
-rw-r--r--MdePkg/Library/BaseLib/X64/WriteCr3.asm3
-rw-r--r--MdePkg/Library/BaseLib/X64/WriteCr4.asm3
-rw-r--r--MdePkg/Library/BaseLib/X64/WriteDr0.asm3
-rw-r--r--MdePkg/Library/BaseLib/X64/WriteDr1.asm3
-rw-r--r--MdePkg/Library/BaseLib/X64/WriteDr2.asm3
-rw-r--r--MdePkg/Library/BaseLib/X64/WriteDr3.asm3
-rw-r--r--MdePkg/Library/BaseLib/X64/WriteDr4.asm3
-rw-r--r--MdePkg/Library/BaseLib/X64/WriteDr5.asm5
-rw-r--r--MdePkg/Library/BaseLib/X64/WriteDr6.asm3
-rw-r--r--MdePkg/Library/BaseLib/X64/WriteDr7.asm3
-rw-r--r--MdePkg/Library/BaseLib/X64/WriteGdtr.asm7
-rw-r--r--MdePkg/Library/BaseLib/X64/WriteIdtr.asm7
-rw-r--r--MdePkg/Library/BaseLib/X64/WriteMm0.asm4
-rw-r--r--MdePkg/Library/BaseLib/X64/WriteMm1.asm4
-rw-r--r--MdePkg/Library/BaseLib/X64/WriteMm2.asm4
-rw-r--r--MdePkg/Library/BaseLib/X64/WriteMm3.asm4
-rw-r--r--MdePkg/Library/BaseLib/X64/WriteMm4.asm4
-rw-r--r--MdePkg/Library/BaseLib/X64/WriteMm5.asm4
-rw-r--r--MdePkg/Library/BaseLib/X64/WriteMm6.asm4
-rw-r--r--MdePkg/Library/BaseLib/X64/WriteMm7.asm4
-rw-r--r--MdePkg/Library/BaseLib/X64/WriteMsr32.asm41
-rw-r--r--MdePkg/Library/BaseLib/X64/WriteMsr64.asm4
50 files changed, 147 insertions, 141 deletions
diff --git a/MdePkg/Library/BaseLib/X64/DisablePaging64.asm b/MdePkg/Library/BaseLib/X64/DisablePaging64.asm
index 7b1e1b8bd2..2609c941aa 100644
--- a/MdePkg/Library/BaseLib/X64/DisablePaging64.asm
+++ b/MdePkg/Library/BaseLib/X64/DisablePaging64.asm
@@ -23,6 +23,17 @@
.code
+;------------------------------------------------------------------------------
+; VOID
+; EFIAPI
+; InternalX86DisablePaging64 (
+; IN UINT16 Cs,
+; IN UINT32 EntryPoint,
+; IN UINT32 Context1, OPTIONAL
+; IN UINT32 Context2, OPTIONAL
+; IN UINT32 NewStack
+; );
+;------------------------------------------------------------------------------
InternalX86DisablePaging64 PROC
cli
shl rcx, 32
diff --git a/MdePkg/Library/BaseLib/X64/FxRestore.asm b/MdePkg/Library/BaseLib/X64/FxRestore.asm
index 8acfc2f00f..7e7037e9e6 100644
--- a/MdePkg/Library/BaseLib/X64/FxRestore.asm
+++ b/MdePkg/Library/BaseLib/X64/FxRestore.asm
@@ -23,6 +23,13 @@
.code
+;------------------------------------------------------------------------------
+; VOID
+; EFIAPI
+; InternalX86FxRestore (
+; IN CONST IA32_FX_BUFFER *Buffer
+; );
+;------------------------------------------------------------------------------
InternalX86FxRestore PROC
fxrstor [rcx]
ret
diff --git a/MdePkg/Library/BaseLib/X64/FxSave.asm b/MdePkg/Library/BaseLib/X64/FxSave.asm
index cacb1f5283..ea19cd1648 100644
--- a/MdePkg/Library/BaseLib/X64/FxSave.asm
+++ b/MdePkg/Library/BaseLib/X64/FxSave.asm
@@ -23,6 +23,13 @@
.code
+;------------------------------------------------------------------------------
+; VOID
+; EFIAPI
+; InternalX86FxSave (
+; OUT IA32_FX_BUFFER *Buffer
+; );
+;------------------------------------------------------------------------------
InternalX86FxSave PROC
fxsave [rcx]
ret
diff --git a/MdePkg/Library/BaseLib/X64/LongJump.asm b/MdePkg/Library/BaseLib/X64/LongJump.asm
index fb6378d030..6ef5f964e0 100644
--- a/MdePkg/Library/BaseLib/X64/LongJump.asm
+++ b/MdePkg/Library/BaseLib/X64/LongJump.asm
@@ -21,6 +21,14 @@
.code
+;------------------------------------------------------------------------------
+; VOID
+; EFIAPI
+; InternalLongJump (
+; IN BASE_LIBRARY_JUMP_BUFFER *JumpBuffer,
+; IN UINTN Value
+; );
+;------------------------------------------------------------------------------
InternalLongJump PROC
mov rbx, [rcx]
mov rsp, [rcx + 8]
diff --git a/MdePkg/Library/BaseLib/X64/ReadCs.asm b/MdePkg/Library/BaseLib/X64/ReadCs.asm
index 126149a47c..642ce5b169 100644
--- a/MdePkg/Library/BaseLib/X64/ReadCs.asm
+++ b/MdePkg/Library/BaseLib/X64/ReadCs.asm
@@ -31,7 +31,7 @@
; );
;------------------------------------------------------------------------------
AsmReadCs PROC
- mov ax, cs
+ mov eax, cs
ret
AsmReadCs ENDP
diff --git a/MdePkg/Library/BaseLib/X64/ReadDs.asm b/MdePkg/Library/BaseLib/X64/ReadDs.asm
index bdcddb65d8..6f2629872b 100644
--- a/MdePkg/Library/BaseLib/X64/ReadDs.asm
+++ b/MdePkg/Library/BaseLib/X64/ReadDs.asm
@@ -31,9 +31,8 @@
; );
;------------------------------------------------------------------------------
AsmReadDs PROC
- mov ax, ds
+ mov eax, ds
ret
AsmReadDs ENDP
END
-
diff --git a/MdePkg/Library/BaseLib/X64/ReadEs.asm b/MdePkg/Library/BaseLib/X64/ReadEs.asm
index 40384bcd71..d5fe84d73f 100644
--- a/MdePkg/Library/BaseLib/X64/ReadEs.asm
+++ b/MdePkg/Library/BaseLib/X64/ReadEs.asm
@@ -31,7 +31,7 @@
; );
;------------------------------------------------------------------------------
AsmReadEs PROC
- mov ax, es
+ mov eax, es
ret
AsmReadEs ENDP
diff --git a/MdePkg/Library/BaseLib/X64/ReadFs.asm b/MdePkg/Library/BaseLib/X64/ReadFs.asm
index b63e474023..d44ee545af 100644
--- a/MdePkg/Library/BaseLib/X64/ReadFs.asm
+++ b/MdePkg/Library/BaseLib/X64/ReadFs.asm
@@ -31,7 +31,7 @@
; );
;------------------------------------------------------------------------------
AsmReadFs PROC
- mov ax, fs
+ mov eax, fs
ret
AsmReadFs ENDP
diff --git a/MdePkg/Library/BaseLib/X64/ReadGdtr.asm b/MdePkg/Library/BaseLib/X64/ReadGdtr.asm
index 2d40599a8b..0bc2949b54 100644
--- a/MdePkg/Library/BaseLib/X64/ReadGdtr.asm
+++ b/MdePkg/Library/BaseLib/X64/ReadGdtr.asm
@@ -23,6 +23,13 @@
.code
+;------------------------------------------------------------------------------
+; VOID
+; EFIAPI
+; InternalX86ReadGdtr (
+; OUT IA32_DESCRIPTOR *Gdtr
+; );
+;------------------------------------------------------------------------------
InternalX86ReadGdtr PROC
sgdt fword ptr [rcx]
ret
diff --git a/MdePkg/Library/BaseLib/X64/ReadGs.asm b/MdePkg/Library/BaseLib/X64/ReadGs.asm
index 02d140e670..bc5de7691b 100644
--- a/MdePkg/Library/BaseLib/X64/ReadGs.asm
+++ b/MdePkg/Library/BaseLib/X64/ReadGs.asm
@@ -31,7 +31,7 @@
; );
;------------------------------------------------------------------------------
AsmReadGs PROC
- mov ax, gs
+ mov eax, gs
ret
AsmReadGs ENDP
diff --git a/MdePkg/Library/BaseLib/X64/ReadIdtr.asm b/MdePkg/Library/BaseLib/X64/ReadIdtr.asm
index 260f697178..db684f3671 100644
--- a/MdePkg/Library/BaseLib/X64/ReadIdtr.asm
+++ b/MdePkg/Library/BaseLib/X64/ReadIdtr.asm
@@ -23,6 +23,13 @@
.code
+;------------------------------------------------------------------------------
+; VOID
+; EFIAPI
+; InternalX86ReadIdtr (
+; OUT IA32_DESCRIPTOR *Idtr
+; );
+;------------------------------------------------------------------------------
InternalX86ReadIdtr PROC
sidt fword ptr [rcx]
ret
diff --git a/MdePkg/Library/BaseLib/X64/ReadMm0.asm b/MdePkg/Library/BaseLib/X64/ReadMm0.asm
index 1239bcacd6..a81d208298 100644
--- a/MdePkg/Library/BaseLib/X64/ReadMm0.asm
+++ b/MdePkg/Library/BaseLib/X64/ReadMm0.asm
@@ -24,7 +24,7 @@
.code
;------------------------------------------------------------------------------
-; UINTN
+; UINT64
; EFIAPI
; AsmReadMm0 (
; VOID
diff --git a/MdePkg/Library/BaseLib/X64/ReadMm1.asm b/MdePkg/Library/BaseLib/X64/ReadMm1.asm
index b42bd7f63f..5da8c4f9e5 100644
--- a/MdePkg/Library/BaseLib/X64/ReadMm1.asm
+++ b/MdePkg/Library/BaseLib/X64/ReadMm1.asm
@@ -24,7 +24,7 @@
.code
;------------------------------------------------------------------------------
-; UINTN
+; UINT64
; EFIAPI
; AsmReadMm1 (
; VOID
diff --git a/MdePkg/Library/BaseLib/X64/ReadMm2.asm b/MdePkg/Library/BaseLib/X64/ReadMm2.asm
index b10782e403..3b2b1e3af3 100644
--- a/MdePkg/Library/BaseLib/X64/ReadMm2.asm
+++ b/MdePkg/Library/BaseLib/X64/ReadMm2.asm
@@ -24,7 +24,7 @@
.code
;------------------------------------------------------------------------------
-; UINTN
+; UINT64
; EFIAPI
; AsmReadMm2 (
; VOID
diff --git a/MdePkg/Library/BaseLib/X64/ReadMm3.asm b/MdePkg/Library/BaseLib/X64/ReadMm3.asm
index 15a96475bd..6283c30285 100644
--- a/MdePkg/Library/BaseLib/X64/ReadMm3.asm
+++ b/MdePkg/Library/BaseLib/X64/ReadMm3.asm
@@ -24,7 +24,7 @@
.code
;------------------------------------------------------------------------------
-; UINTN
+; UINT64
; EFIAPI
; AsmReadMm3 (
; VOID
diff --git a/MdePkg/Library/BaseLib/X64/ReadMm4.asm b/MdePkg/Library/BaseLib/X64/ReadMm4.asm
index 73f528342e..a65f130283 100644
--- a/MdePkg/Library/BaseLib/X64/ReadMm4.asm
+++ b/MdePkg/Library/BaseLib/X64/ReadMm4.asm
@@ -24,7 +24,7 @@
.code
;------------------------------------------------------------------------------
-; UINTN
+; UINT64
; EFIAPI
; AsmReadMm4 (
; VOID
diff --git a/MdePkg/Library/BaseLib/X64/ReadMm5.asm b/MdePkg/Library/BaseLib/X64/ReadMm5.asm
index a487889480..5295c38ae0 100644
--- a/MdePkg/Library/BaseLib/X64/ReadMm5.asm
+++ b/MdePkg/Library/BaseLib/X64/ReadMm5.asm
@@ -24,7 +24,7 @@
.code
;------------------------------------------------------------------------------
-; UINTN
+; UINT64
; EFIAPI
; AsmReadMm5 (
; VOID
diff --git a/MdePkg/Library/BaseLib/X64/ReadMm6.asm b/MdePkg/Library/BaseLib/X64/ReadMm6.asm
index 56f81bf7b1..acdc99b888 100644
--- a/MdePkg/Library/BaseLib/X64/ReadMm6.asm
+++ b/MdePkg/Library/BaseLib/X64/ReadMm6.asm
@@ -24,7 +24,7 @@
.code
;------------------------------------------------------------------------------
-; UINTN
+; UINT64
; EFIAPI
; AsmReadMm6 (
; VOID
diff --git a/MdePkg/Library/BaseLib/X64/ReadMm7.asm b/MdePkg/Library/BaseLib/X64/ReadMm7.asm
index e3ad6bb658..7a1b4e6111 100644
--- a/MdePkg/Library/BaseLib/X64/ReadMm7.asm
+++ b/MdePkg/Library/BaseLib/X64/ReadMm7.asm
@@ -24,7 +24,7 @@
.code
;------------------------------------------------------------------------------
-; UINTN
+; UINT64
; EFIAPI
; AsmReadMm7 (
; VOID
diff --git a/MdePkg/Library/BaseLib/X64/ReadMsr32.asm b/MdePkg/Library/BaseLib/X64/ReadMsr32.asm
deleted file mode 100644
index 271eabbeae..0000000000
--- a/MdePkg/Library/BaseLib/X64/ReadMsr32.asm
+++ /dev/null
@@ -1,38 +0,0 @@
-;------------------------------------------------------------------------------
-;
-; Copyright (c) 2006, Intel Corporation
-; All rights reserved. This program and the accompanying materials
-; are licensed and made available under the terms and conditions of the BSD License
-; which accompanies this distribution. The full text of the license may be found at
-; http://opensource.org/licenses/bsd-license.php
-;
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-;
-; Module Name:
-;
-; ReadMsr32.Asm
-;
-; Abstract:
-;
-; AsmReadMsr32 function
-;
-; Notes:
-;
-;------------------------------------------------------------------------------
-
- .code
-
-;------------------------------------------------------------------------------
-; UINT32
-; EFIAPI
-; AsmReadMsr32 (
-; IN UINT32 Index
-; );
-;------------------------------------------------------------------------------
-AsmReadMsr32 PROC
- rdmsr
- ret
-AsmReadMsr32 ENDP
-
- END
diff --git a/MdePkg/Library/BaseLib/X64/ReadMsr64.asm b/MdePkg/Library/BaseLib/X64/ReadMsr64.asm
index 4444c18676..580c0761a4 100644
--- a/MdePkg/Library/BaseLib/X64/ReadMsr64.asm
+++ b/MdePkg/Library/BaseLib/X64/ReadMsr64.asm
@@ -31,9 +31,9 @@
; );
;------------------------------------------------------------------------------
AsmReadMsr64 PROC
- rdmsr
- shl rax, 20h
- shrd rax, rdx, 20h
+ rdmsr ; edx & eax are zero extended
+ shl rdx, 20h
+ or rax, rdx
ret
AsmReadMsr64 ENDP
diff --git a/MdePkg/Library/BaseLib/X64/ReadPmc.asm b/MdePkg/Library/BaseLib/X64/ReadPmc.asm
index b5004d6f34..5ca60fa85f 100644
--- a/MdePkg/Library/BaseLib/X64/ReadPmc.asm
+++ b/MdePkg/Library/BaseLib/X64/ReadPmc.asm
@@ -32,11 +32,8 @@
;------------------------------------------------------------------------------
AsmReadPmc PROC
rdpmc
- shl ecx, 1
- jnc @F
- shl rax, 20h
- shrd rax, rdx, 20h
-@@:
+ shl rdx, 20h
+ or rax, rdx
ret
AsmReadPmc ENDP
diff --git a/MdePkg/Library/BaseLib/X64/ReadSs.asm b/MdePkg/Library/BaseLib/X64/ReadSs.asm
index 4aa480d71b..2c2be564ac 100644
--- a/MdePkg/Library/BaseLib/X64/ReadSs.asm
+++ b/MdePkg/Library/BaseLib/X64/ReadSs.asm
@@ -31,7 +31,7 @@
; );
;------------------------------------------------------------------------------
AsmReadSs PROC
- mov ax, ss
+ mov eax, ss
ret
AsmReadSs ENDP
diff --git a/MdePkg/Library/BaseLib/X64/ReadTsc.asm b/MdePkg/Library/BaseLib/X64/ReadTsc.asm
index 25fa2cc5d8..7c45eebd54 100644
--- a/MdePkg/Library/BaseLib/X64/ReadTsc.asm
+++ b/MdePkg/Library/BaseLib/X64/ReadTsc.asm
@@ -32,8 +32,8 @@
;------------------------------------------------------------------------------
AsmReadTsc PROC
rdtsc
- shl rax, 20h
- shrd rax, rdx, 20h
+ shl rdx, 20h
+ or rax, rdx
ret
AsmReadTsc ENDP
diff --git a/MdePkg/Library/BaseLib/X64/SetJump.asm b/MdePkg/Library/BaseLib/X64/SetJump.asm
index 148b0cb65e..2ed581ea9d 100644
--- a/MdePkg/Library/BaseLib/X64/SetJump.asm
+++ b/MdePkg/Library/BaseLib/X64/SetJump.asm
@@ -23,6 +23,13 @@
EXTERNDEF InternalAssertJumpBuffer:PROC
+;------------------------------------------------------------------------------
+; UINTN
+; EFIAPI
+; SetJump (
+; OUT BASE_LIBRARY_JUMP_BUFFER *JumpBuffer
+; );
+;------------------------------------------------------------------------------
SetJump PROC
push rcx
add rsp, -20h
diff --git a/MdePkg/Library/BaseLib/X64/Thunk16.asm b/MdePkg/Library/BaseLib/X64/Thunk16.asm
index b120434efb..2c35c72a57 100644
--- a/MdePkg/Library/BaseLib/X64/Thunk16.asm
+++ b/MdePkg/Library/BaseLib/X64/Thunk16.asm
@@ -61,6 +61,10 @@ SavedGdt LABEL FWORD
DW ?
DQ ?
+;------------------------------------------------------------------------------
+; _BackFromUserCode() takes control in real mode after 'retf' has been executed
+; by user code. It will be shadowed to somewhere in memory below 1MB.
+;------------------------------------------------------------------------------
_BackFromUserCode PROC
DB 16h ; push ss
DB 0eh ; push cs
@@ -125,6 +129,10 @@ _16Gdtr LABEL FWORD
_16GdtrBase DQ _NullSegDesc
_16Idtr FWORD (1 SHL 10) - 1
+;------------------------------------------------------------------------------
+; _ToUserCode() takes control in real mode before passing control to user code.
+; It will be shadowed to somewhere in memory below 1MB.
+;------------------------------------------------------------------------------
_ToUserCode PROC
mov edi, ss
mov ss, edx ; set new segment selectors
@@ -184,11 +192,14 @@ _16DsDesc LABEL QWORD
DB 0
GdtEnd LABEL QWORD
-;
-; @param RegSet Pointer to a IA32_DWORD_REGS structure
-; @param Transition Pointer to the transition code
-; @return The address of the 16-bit stack after returning from user code
-;
+;------------------------------------------------------------------------------
+; IA32_REGISTER_SET *
+; EFIAPI
+; InternalAsmThunk16 (
+; IN IA32_REGISTER_SET *RegisterSet,
+; IN OUT VOID *Transition
+; );
+;------------------------------------------------------------------------------
InternalAsmThunk16 PROC USES rbp rbx rsi rdi
mov r10d, ds
mov r11d, es
diff --git a/MdePkg/Library/BaseLib/X64/WriteCr0.asm b/MdePkg/Library/BaseLib/X64/WriteCr0.asm
index defc7e7c96..caf1904d2e 100644
--- a/MdePkg/Library/BaseLib/X64/WriteCr0.asm
+++ b/MdePkg/Library/BaseLib/X64/WriteCr0.asm
@@ -27,11 +27,12 @@
; UINTN
; EFIAPI
; AsmWriteCr0 (
-; VOID
+; UINTN Cr0
; );
;------------------------------------------------------------------------------
AsmWriteCr0 PROC
mov cr0, rcx
+ mov rax, rcx
ret
AsmWriteCr0 ENDP
diff --git a/MdePkg/Library/BaseLib/X64/WriteCr2.asm b/MdePkg/Library/BaseLib/X64/WriteCr2.asm
index ebe6f89d62..ee5b546262 100644
--- a/MdePkg/Library/BaseLib/X64/WriteCr2.asm
+++ b/MdePkg/Library/BaseLib/X64/WriteCr2.asm
@@ -27,11 +27,12 @@
; UINTN
; EFIAPI
; AsmWriteCr2 (
-; VOID
+; UINTN Cr2
; );
;------------------------------------------------------------------------------
AsmWriteCr2 PROC
mov cr2, rcx
+ mov rax, rcx
ret
AsmWriteCr2 ENDP
diff --git a/MdePkg/Library/BaseLib/X64/WriteCr3.asm b/MdePkg/Library/BaseLib/X64/WriteCr3.asm
index 5715dea9b7..e63229820e 100644
--- a/MdePkg/Library/BaseLib/X64/WriteCr3.asm
+++ b/MdePkg/Library/BaseLib/X64/WriteCr3.asm
@@ -27,11 +27,12 @@
; UINTN
; EFIAPI
; AsmWriteCr3 (
-; VOID
+; UINTN Cr3
; );
;------------------------------------------------------------------------------
AsmWriteCr3 PROC
mov cr3, rcx
+ mov rax, rcx
ret
AsmWriteCr3 ENDP
diff --git a/MdePkg/Library/BaseLib/X64/WriteCr4.asm b/MdePkg/Library/BaseLib/X64/WriteCr4.asm
index 210744e16f..3e79fe23e4 100644
--- a/MdePkg/Library/BaseLib/X64/WriteCr4.asm
+++ b/MdePkg/Library/BaseLib/X64/WriteCr4.asm
@@ -27,11 +27,12 @@
; UINTN
; EFIAPI
; AsmWriteCr4 (
-; VOID
+; UINTN Cr4
; );
;------------------------------------------------------------------------------
AsmWriteCr4 PROC
mov cr4, rcx
+ mov rax, rcx
ret
AsmWriteCr4 ENDP
diff --git a/MdePkg/Library/BaseLib/X64/WriteDr0.asm b/MdePkg/Library/BaseLib/X64/WriteDr0.asm
index 2515a20404..a1131fead9 100644
--- a/MdePkg/Library/BaseLib/X64/WriteDr0.asm
+++ b/MdePkg/Library/BaseLib/X64/WriteDr0.asm
@@ -27,11 +27,12 @@
; UINTN
; EFIAPI
; AsmWriteDr0 (
-; VOID
+; IN UINTN Value
; );
;------------------------------------------------------------------------------
AsmWriteDr0 PROC
mov dr0, rcx
+ mov rax, rcx
ret
AsmWriteDr0 ENDP
diff --git a/MdePkg/Library/BaseLib/X64/WriteDr1.asm b/MdePkg/Library/BaseLib/X64/WriteDr1.asm
index 89f36ac3f9..366edb6ef8 100644
--- a/MdePkg/Library/BaseLib/X64/WriteDr1.asm
+++ b/MdePkg/Library/BaseLib/X64/WriteDr1.asm
@@ -27,11 +27,12 @@
; UINTN
; EFIAPI
; AsmWriteDr1 (
-; VOID
+; IN UINTN Value
; );
;------------------------------------------------------------------------------
AsmWriteDr1 PROC
mov dr1, rcx
+ mov rax, rcx
ret
AsmWriteDr1 ENDP
diff --git a/MdePkg/Library/BaseLib/X64/WriteDr2.asm b/MdePkg/Library/BaseLib/X64/WriteDr2.asm
index 820977c2e4..bde8e3d929 100644
--- a/MdePkg/Library/BaseLib/X64/WriteDr2.asm
+++ b/MdePkg/Library/BaseLib/X64/WriteDr2.asm
@@ -27,11 +27,12 @@
; UINTN
; EFIAPI
; AsmWriteDr2 (
-; VOID
+; IN UINTN Value
; );
;------------------------------------------------------------------------------
AsmWriteDr2 PROC
mov dr2, rcx
+ mov rax, rcx
ret
AsmWriteDr2 ENDP
diff --git a/MdePkg/Library/BaseLib/X64/WriteDr3.asm b/MdePkg/Library/BaseLib/X64/WriteDr3.asm
index 51c1407277..65180a27d5 100644
--- a/MdePkg/Library/BaseLib/X64/WriteDr3.asm
+++ b/MdePkg/Library/BaseLib/X64/WriteDr3.asm
@@ -27,11 +27,12 @@
; UINTN
; EFIAPI
; AsmWriteDr3 (
-; VOID
+; IN UINTN Value
; );
;------------------------------------------------------------------------------
AsmWriteDr3 PROC
mov dr3, rcx
+ mov rax, rcx
ret
AsmWriteDr3 ENDP
diff --git a/MdePkg/Library/BaseLib/X64/WriteDr4.asm b/MdePkg/Library/BaseLib/X64/WriteDr4.asm
index 12b643825b..ad618f1089 100644
--- a/MdePkg/Library/BaseLib/X64/WriteDr4.asm
+++ b/MdePkg/Library/BaseLib/X64/WriteDr4.asm
@@ -27,11 +27,12 @@
; UINTN
; EFIAPI
; AsmWriteDr4 (
-; VOID
+; IN UINTN Value
; );
;------------------------------------------------------------------------------
AsmWriteDr4 PROC
DB 0fh, 23h, 0e1h
+ mov rax, rcx
ret
AsmWriteDr4 ENDP
diff --git a/MdePkg/Library/BaseLib/X64/WriteDr5.asm b/MdePkg/Library/BaseLib/X64/WriteDr5.asm
index 6d454d5267..91eeef20e3 100644
--- a/MdePkg/Library/BaseLib/X64/WriteDr5.asm
+++ b/MdePkg/Library/BaseLib/X64/WriteDr5.asm
@@ -26,12 +26,13 @@
;------------------------------------------------------------------------------
; UINTN
; EFIAPI
-; AsmWriteDr5 (
-; VOID
+; AsmWriteDr6 (
+; IN UINTN Value
; );
;------------------------------------------------------------------------------
AsmWriteDr5 PROC
DB 0fh, 23h, 0e9h
+ mov rax, rcx
ret
AsmWriteDr5 ENDP
diff --git a/MdePkg/Library/BaseLib/X64/WriteDr6.asm b/MdePkg/Library/BaseLib/X64/WriteDr6.asm
index b7b9f2509d..f1ddae8bfc 100644
--- a/MdePkg/Library/BaseLib/X64/WriteDr6.asm
+++ b/MdePkg/Library/BaseLib/X64/WriteDr6.asm
@@ -27,11 +27,12 @@
; UINTN
; EFIAPI
; AsmWriteDr6 (
-; VOID
+; IN UINTN Value
; );
;------------------------------------------------------------------------------
AsmWriteDr6 PROC
mov dr6, rcx
+ mov rax, rcx
ret
AsmWriteDr6 ENDP
diff --git a/MdePkg/Library/BaseLib/X64/WriteDr7.asm b/MdePkg/Library/BaseLib/X64/WriteDr7.asm
index de2237b6e4..6a0cbfa6ff 100644
--- a/MdePkg/Library/BaseLib/X64/WriteDr7.asm
+++ b/MdePkg/Library/BaseLib/X64/WriteDr7.asm
@@ -27,11 +27,12 @@
; UINTN
; EFIAPI
; AsmWriteDr7 (
-; VOID
+; IN UINTN Value
; );
;------------------------------------------------------------------------------
AsmWriteDr7 PROC
mov dr7, rcx
+ mov rax, rcx
ret
AsmWriteDr7 ENDP
diff --git a/MdePkg/Library/BaseLib/X64/WriteGdtr.asm b/MdePkg/Library/BaseLib/X64/WriteGdtr.asm
index 1757e3dea4..fa99a499e7 100644
--- a/MdePkg/Library/BaseLib/X64/WriteGdtr.asm
+++ b/MdePkg/Library/BaseLib/X64/WriteGdtr.asm
@@ -23,6 +23,13 @@
.code
+;------------------------------------------------------------------------------
+; VOID
+; EFIAPI
+; InternalX86WriteGdtr (
+; IN CONST IA32_DESCRIPTOR *Idtr
+; );
+;------------------------------------------------------------------------------
InternalX86WriteGdtr PROC
lgdt fword ptr [rcx]
ret
diff --git a/MdePkg/Library/BaseLib/X64/WriteIdtr.asm b/MdePkg/Library/BaseLib/X64/WriteIdtr.asm
index 09fcb9e457..2f6c081ab6 100644
--- a/MdePkg/Library/BaseLib/X64/WriteIdtr.asm
+++ b/MdePkg/Library/BaseLib/X64/WriteIdtr.asm
@@ -23,6 +23,13 @@
.code
+;------------------------------------------------------------------------------
+; VOID
+; EFIAPI
+; InternalX86WriteIdtr (
+; IN CONST IA32_DESCRIPTOR *Idtr
+; );
+;------------------------------------------------------------------------------
InternalX86WriteIdtr PROC
lidt fword ptr [rcx]
ret
diff --git a/MdePkg/Library/BaseLib/X64/WriteMm0.asm b/MdePkg/Library/BaseLib/X64/WriteMm0.asm
index bb9a576125..0ad65e366d 100644
--- a/MdePkg/Library/BaseLib/X64/WriteMm0.asm
+++ b/MdePkg/Library/BaseLib/X64/WriteMm0.asm
@@ -24,10 +24,10 @@
.code
;------------------------------------------------------------------------------
-; UINTN
+; VOID
; EFIAPI
; AsmWriteMm0 (
-; VOID
+; IN UINT64 Value
; );
;------------------------------------------------------------------------------
AsmWriteMm0 PROC
diff --git a/MdePkg/Library/BaseLib/X64/WriteMm1.asm b/MdePkg/Library/BaseLib/X64/WriteMm1.asm
index 1bab3bcd8e..66425a43c2 100644
--- a/MdePkg/Library/BaseLib/X64/WriteMm1.asm
+++ b/MdePkg/Library/BaseLib/X64/WriteMm1.asm
@@ -24,10 +24,10 @@
.code
;------------------------------------------------------------------------------
-; UINTN
+; VOID
; EFIAPI
; AsmWriteMm1 (
-; VOID
+; IN UINT64 Value
; );
;------------------------------------------------------------------------------
AsmWriteMm1 PROC
diff --git a/MdePkg/Library/BaseLib/X64/WriteMm2.asm b/MdePkg/Library/BaseLib/X64/WriteMm2.asm
index 97e8a6a676..bd0f0a0e1a 100644
--- a/MdePkg/Library/BaseLib/X64/WriteMm2.asm
+++ b/MdePkg/Library/BaseLib/X64/WriteMm2.asm
@@ -24,10 +24,10 @@
.code
;------------------------------------------------------------------------------
-; UINTN
+; VOID
; EFIAPI
; AsmWriteMm2 (
-; VOID
+; IN UINT64 Value
; );
;------------------------------------------------------------------------------
AsmWriteMm2 PROC
diff --git a/MdePkg/Library/BaseLib/X64/WriteMm3.asm b/MdePkg/Library/BaseLib/X64/WriteMm3.asm
index d55e19a406..fa36ea64bb 100644
--- a/MdePkg/Library/BaseLib/X64/WriteMm3.asm
+++ b/MdePkg/Library/BaseLib/X64/WriteMm3.asm
@@ -24,10 +24,10 @@
.code
;------------------------------------------------------------------------------
-; UINTN
+; VOID
; EFIAPI
; AsmWriteMm3 (
-; VOID
+; IN UINT64 Value
; );
;------------------------------------------------------------------------------
AsmWriteMm3 PROC
diff --git a/MdePkg/Library/BaseLib/X64/WriteMm4.asm b/MdePkg/Library/BaseLib/X64/WriteMm4.asm
index 2a69b93bcc..d9bc46e16c 100644
--- a/MdePkg/Library/BaseLib/X64/WriteMm4.asm
+++ b/MdePkg/Library/BaseLib/X64/WriteMm4.asm
@@ -24,10 +24,10 @@
.code
;------------------------------------------------------------------------------
-; UINTN
+; VOID
; EFIAPI
; AsmWriteMm4 (
-; VOID
+; IN UINT64 Value
; );
;------------------------------------------------------------------------------
AsmWriteMm4 PROC
diff --git a/MdePkg/Library/BaseLib/X64/WriteMm5.asm b/MdePkg/Library/BaseLib/X64/WriteMm5.asm
index c4d798bcbd..f268bea8ec 100644
--- a/MdePkg/Library/BaseLib/X64/WriteMm5.asm
+++ b/MdePkg/Library/BaseLib/X64/WriteMm5.asm
@@ -24,10 +24,10 @@
.code
;------------------------------------------------------------------------------
-; UINTN
+; VOID
; EFIAPI
; AsmWriteMm5 (
-; VOID
+; IN UINT64 Value
; );
;------------------------------------------------------------------------------
AsmWriteMm5 PROC
diff --git a/MdePkg/Library/BaseLib/X64/WriteMm6.asm b/MdePkg/Library/BaseLib/X64/WriteMm6.asm
index c0164f66da..cb32ea6dc3 100644
--- a/MdePkg/Library/BaseLib/X64/WriteMm6.asm
+++ b/MdePkg/Library/BaseLib/X64/WriteMm6.asm
@@ -24,10 +24,10 @@
.code
;------------------------------------------------------------------------------
-; UINTN
+; VOID
; EFIAPI
; AsmWriteMm6 (
-; VOID
+; IN UINT64 Value
; );
;------------------------------------------------------------------------------
AsmWriteMm6 PROC
diff --git a/MdePkg/Library/BaseLib/X64/WriteMm7.asm b/MdePkg/Library/BaseLib/X64/WriteMm7.asm
index 20768e2b78..f5713823bb 100644
--- a/MdePkg/Library/BaseLib/X64/WriteMm7.asm
+++ b/MdePkg/Library/BaseLib/X64/WriteMm7.asm
@@ -24,10 +24,10 @@
.code
;------------------------------------------------------------------------------
-; UINTN
+; VOID
; EFIAPI
; AsmWriteMm7 (
-; VOID
+; IN UINT64 Value
; );
;------------------------------------------------------------------------------
AsmWriteMm7 PROC
diff --git a/MdePkg/Library/BaseLib/X64/WriteMsr32.asm b/MdePkg/Library/BaseLib/X64/WriteMsr32.asm
deleted file mode 100644
index 0a74403624..0000000000
--- a/MdePkg/Library/BaseLib/X64/WriteMsr32.asm
+++ /dev/null
@@ -1,41 +0,0 @@
-;------------------------------------------------------------------------------
-;
-; Copyright (c) 2006, Intel Corporation
-; All rights reserved. This program and the accompanying materials
-; are licensed and made available under the terms and conditions of the BSD License
-; which accompanies this distribution. The full text of the license may be found at
-; http://opensource.org/licenses/bsd-license.php
-;
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-;
-; Module Name:
-;
-; WriteMsr32.Asm
-;
-; Abstract:
-;
-; AsmWriteMsr32 function
-;
-; Notes:
-;
-;------------------------------------------------------------------------------
-
- .code
-
-;------------------------------------------------------------------------------
-; UINT32
-; EFIAPI
-; AsmWriteMsr32 (
-; IN UINT32 Index,
-; IN UINT32 Value
-; );
-;------------------------------------------------------------------------------
-AsmWriteMsr32 PROC
- mov eax, edx
- xor edx, edx
- wrmsr
- ret
-AsmWriteMsr32 ENDP
-
- END
diff --git a/MdePkg/Library/BaseLib/X64/WriteMsr64.asm b/MdePkg/Library/BaseLib/X64/WriteMsr64.asm
index 3337f45891..6b8066f922 100644
--- a/MdePkg/Library/BaseLib/X64/WriteMsr64.asm
+++ b/MdePkg/Library/BaseLib/X64/WriteMsr64.asm
@@ -32,11 +32,9 @@
; );
;------------------------------------------------------------------------------
AsmWriteMsr64 PROC
- push rdx
- mov eax, edx
+ mov rax, rdx
shr rdx, 20h
wrmsr
- pop rax
ret
AsmWriteMsr64 ENDP