diff --git a/UefiCpuPkg/Library/SmmCpuFeaturesLib/Ia32/StuffRsb.inc b/UefiCpuPkg/Include/StuffRsbNasm.inc
similarity index 94%
rename from UefiCpuPkg/Library/SmmCpuFeaturesLib/Ia32/StuffRsb.inc
rename to UefiCpuPkg/Include/StuffRsbNasm.inc
index 14267c3fde..276baea906 100644
--- a/UefiCpuPkg/Library/SmmCpuFeaturesLib/Ia32/StuffRsb.inc
+++ b/UefiCpuPkg/Include/StuffRsbNasm.inc
@@ -11,7 +11,8 @@
;
; Abstract:
;
-; This file provides macro definitions for stuffing the Return Stack Buffer (RSB).
+; This file provides macro definitions for stuffing the Return Stack Buffer (RSB)
+; for NASM files.
;
;------------------------------------------------------------------------------
diff --git a/UefiCpuPkg/Library/SmmCpuFeaturesLib/Ia32/SmiEntry.nasm b/UefiCpuPkg/Library/SmmCpuFeaturesLib/Ia32/SmiEntry.nasm
index 31754734bc..8c1242f978 100644
--- a/UefiCpuPkg/Library/SmmCpuFeaturesLib/Ia32/SmiEntry.nasm
+++ b/UefiCpuPkg/Library/SmmCpuFeaturesLib/Ia32/SmiEntry.nasm
@@ -18,7 +18,7 @@
;
;-------------------------------------------------------------------------------
-%include "StuffRsb.inc"
+%include "StuffRsbNasm.inc"
%define MSR_IA32_MISC_ENABLE 0x1A0
%define MSR_EFER 0xc0000080
diff --git a/UefiCpuPkg/Library/SmmCpuFeaturesLib/Ia32/SmiException.nasm b/UefiCpuPkg/Library/SmmCpuFeaturesLib/Ia32/SmiException.nasm
index bc8dbfe20b..398347c6e8 100644
--- a/UefiCpuPkg/Library/SmmCpuFeaturesLib/Ia32/SmiException.nasm
+++ b/UefiCpuPkg/Library/SmmCpuFeaturesLib/Ia32/SmiException.nasm
@@ -18,7 +18,7 @@
;
;-------------------------------------------------------------------------------
-%include "StuffRsb.inc"
+%include "StuffRsbNasm.inc"
global ASM_PFX(gcStmPsd)
diff --git a/UefiCpuPkg/Library/SmmCpuFeaturesLib/X64/SmiEntry.nasm b/UefiCpuPkg/Library/SmmCpuFeaturesLib/X64/SmiEntry.nasm
index c0a0f98f11..4ca05bbd73 100644
--- a/UefiCpuPkg/Library/SmmCpuFeaturesLib/X64/SmiEntry.nasm
+++ b/UefiCpuPkg/Library/SmmCpuFeaturesLib/X64/SmiEntry.nasm
@@ -18,7 +18,7 @@
;
;-------------------------------------------------------------------------------
-%include "StuffRsb.inc"
+%include "StuffRsbNasm.inc"
;
; Variables referrenced by C code
diff --git a/UefiCpuPkg/Library/SmmCpuFeaturesLib/X64/SmiException.nasm b/UefiCpuPkg/Library/SmmCpuFeaturesLib/X64/SmiException.nasm
index 3e5295986b..644d895671 100644
--- a/UefiCpuPkg/Library/SmmCpuFeaturesLib/X64/SmiException.nasm
+++ b/UefiCpuPkg/Library/SmmCpuFeaturesLib/X64/SmiException.nasm
@@ -18,7 +18,7 @@
;
;-------------------------------------------------------------------------------
-%include "StuffRsb.inc"
+%include "StuffRsbNasm.inc"
global ASM_PFX(gcStmPsd)
diff --git a/UefiCpuPkg/Library/SmmCpuFeaturesLib/X64/StuffRsb.inc b/UefiCpuPkg/Library/SmmCpuFeaturesLib/X64/StuffRsb.inc
deleted file mode 100644
index 14267c3fde..0000000000
--- a/UefiCpuPkg/Library/SmmCpuFeaturesLib/X64/StuffRsb.inc
+++ /dev/null
@@ -1,55 +0,0 @@
-;------------------------------------------------------------------------------
-;
-; Copyright (c) 2018, 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.
-;
-; Abstract:
-;
-; This file provides macro definitions for stuffing the Return Stack Buffer (RSB).
-;
-;------------------------------------------------------------------------------
-
-%define RSB_STUFF_ENTRIES 0x20
-
-;
-; parameters:
-; @param 1: register to use as counter (e.g. IA32:eax, X64:rax)
-; @param 2: stack pointer to restore (IA32:esp, X64:rsp)
-; @param 3: the size of a stack frame (IA32:4, X64:8)
-;
-%macro StuffRsb 3
- mov %1, RSB_STUFF_ENTRIES / 2
- %%Unroll1:
- call %%Unroll2
- %%SpecTrap1:
- pause
- lfence
- jmp %%SpecTrap1
- %%Unroll2:
- call %%StuffLoop
- %%SpecTrap2:
- pause
- lfence
- jmp %%SpecTrap2
- %%StuffLoop:
- dec %1
- jnz %%Unroll1
- add %2, RSB_STUFF_ENTRIES * %3 ; Restore the stack pointer
-%endmacro
-
-;
-; RSB stuffing macros for IA32 and X64
-;
-%macro StuffRsb32 0
- StuffRsb eax, esp, 4
-%endmacro
-
-%macro StuffRsb64 0
- StuffRsb rax, rsp, 8
-%endmacro
diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmiEntry.nasm b/UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmiEntry.nasm
index 6bbc339c53..3791cfa144 100644
--- a/UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmiEntry.nasm
+++ b/UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmiEntry.nasm
@@ -18,7 +18,7 @@
;
;-------------------------------------------------------------------------------
-%include "StuffRsb.inc"
+%include "StuffRsbNasm.inc"
%define MSR_IA32_MISC_ENABLE 0x1A0
%define MSR_EFER 0xc0000080
diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmmInit.nasm b/UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmmInit.nasm
index 322b1ab556..01ab7abd58 100644
--- a/UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmmInit.nasm
+++ b/UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmmInit.nasm
@@ -18,7 +18,7 @@
;
;-------------------------------------------------------------------------------
-%include "StuffRsb.inc"
+%include "StuffRsbNasm.inc"
extern ASM_PFX(SmmInitHandler)
extern ASM_PFX(mRebasedFlag)
diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/StuffRsb.inc b/UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/StuffRsb.inc
deleted file mode 100644
index 14267c3fde..0000000000
--- a/UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/StuffRsb.inc
+++ /dev/null
@@ -1,55 +0,0 @@
-;------------------------------------------------------------------------------
-;
-; Copyright (c) 2018, 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.
-;
-; Abstract:
-;
-; This file provides macro definitions for stuffing the Return Stack Buffer (RSB).
-;
-;------------------------------------------------------------------------------
-
-%define RSB_STUFF_ENTRIES 0x20
-
-;
-; parameters:
-; @param 1: register to use as counter (e.g. IA32:eax, X64:rax)
-; @param 2: stack pointer to restore (IA32:esp, X64:rsp)
-; @param 3: the size of a stack frame (IA32:4, X64:8)
-;
-%macro StuffRsb 3
- mov %1, RSB_STUFF_ENTRIES / 2
- %%Unroll1:
- call %%Unroll2
- %%SpecTrap1:
- pause
- lfence
- jmp %%SpecTrap1
- %%Unroll2:
- call %%StuffLoop
- %%SpecTrap2:
- pause
- lfence
- jmp %%SpecTrap2
- %%StuffLoop:
- dec %1
- jnz %%Unroll1
- add %2, RSB_STUFF_ENTRIES * %3 ; Restore the stack pointer
-%endmacro
-
-;
-; RSB stuffing macros for IA32 and X64
-;
-%macro StuffRsb32 0
- StuffRsb eax, esp, 4
-%endmacro
-
-%macro StuffRsb64 0
- StuffRsb rax, rsp, 8
-%endmacro
diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiEntry.nasm b/UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiEntry.nasm
index 414b5ab5fa..807b309b27 100644
--- a/UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiEntry.nasm
+++ b/UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmiEntry.nasm
@@ -18,7 +18,7 @@
;
;-------------------------------------------------------------------------------
-%include "StuffRsb.inc"
+%include "StuffRsbNasm.inc"
;
; Variables referrenced by C code
diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmInit.nasm b/UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmInit.nasm
index 24357d5870..5ba45cd8e0 100644
--- a/UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmInit.nasm
+++ b/UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmInit.nasm
@@ -18,7 +18,7 @@
;
;-------------------------------------------------------------------------------
-%include "StuffRsb.inc"
+%include "StuffRsbNasm.inc"
extern ASM_PFX(SmmInitHandler)
extern ASM_PFX(mRebasedFlag)
diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/X64/StuffRsb.inc b/UefiCpuPkg/PiSmmCpuDxeSmm/X64/StuffRsb.inc
deleted file mode 100644
index 14267c3fde..0000000000
--- a/UefiCpuPkg/PiSmmCpuDxeSmm/X64/StuffRsb.inc
+++ /dev/null
@@ -1,55 +0,0 @@
-;------------------------------------------------------------------------------
-;
-; Copyright (c) 2018, 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.
-;
-; Abstract:
-;
-; This file provides macro definitions for stuffing the Return Stack Buffer (RSB).
-;
-;------------------------------------------------------------------------------
-
-%define RSB_STUFF_ENTRIES 0x20
-
-;
-; parameters:
-; @param 1: register to use as counter (e.g. IA32:eax, X64:rax)
-; @param 2: stack pointer to restore (IA32:esp, X64:rsp)
-; @param 3: the size of a stack frame (IA32:4, X64:8)
-;
-%macro StuffRsb 3
- mov %1, RSB_STUFF_ENTRIES / 2
- %%Unroll1:
- call %%Unroll2
- %%SpecTrap1:
- pause
- lfence
- jmp %%SpecTrap1
- %%Unroll2:
- call %%StuffLoop
- %%SpecTrap2:
- pause
- lfence
- jmp %%SpecTrap2
- %%StuffLoop:
- dec %1
- jnz %%Unroll1
- add %2, RSB_STUFF_ENTRIES * %3 ; Restore the stack pointer
-%endmacro
-
-;
-; RSB stuffing macros for IA32 and X64
-;
-%macro StuffRsb32 0
- StuffRsb eax, esp, 4
-%endmacro
-
-%macro StuffRsb64 0
- StuffRsb rax, rsp, 8
-%endmacro