diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/AArch64/memcpy.S b/ArmPkg/Library/CompilerIntrinsicsLib/AArch64/memcpy.S
index 66102da14b6a..4dd6cf207754 100644
--- a/ArmPkg/Library/CompilerIntrinsicsLib/AArch64/memcpy.S
+++ b/ArmPkg/Library/CompilerIntrinsicsLib/AArch64/memcpy.S
@@ -26,16 +26,10 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-
-.text
-.align 2
-
-
-GCC_ASM_EXPORT(memcpy)
-
+#include <AsmMacroIoLibV8.h>
 
 // Taken from Newlib BSD implementation.
-ASM_PFX(memcpy):
+ASM_FUNC(memcpy)
         // Copy dst to x6, so we can preserve return value.
         mov     x6, x0
 
diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/ashldi3.S b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/ashldi3.S
index 74960b1df185..a68b60cf0c96 100644
--- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/ashldi3.S
+++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/ashldi3.S
@@ -12,11 +12,9 @@
 #
 #------------------------------------------------------------------------------
 
-  .text
-  .align 2
-  GCC_ASM_EXPORT(__ashldi3)
+#include <AsmMacroIoLib.h>
 
-ASM_PFX(__ashldi3):
+ASM_FUNC(__ashldi3)
   cmp  r2, #31
   bls  L2
   cmp  r2, #63
diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/ashrdi3.S b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/ashrdi3.S
index 3cee2c1085d8..6d004a553fa6 100644
--- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/ashrdi3.S
+++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/ashrdi3.S
@@ -12,11 +12,9 @@
 #
 #------------------------------------------------------------------------------
 
-  .text
-  .align 2
-  GCC_ASM_EXPORT(__ashrdi3)
+#include <AsmMacroIoLib.h>
 
-ASM_PFX(__ashrdi3):
+ASM_FUNC(__ashrdi3)
   cmp  r2, #31
   bls  L2
   cmp  r2, #63
diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/clzsi2.S b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/clzsi2.S
index 4cef26575712..8ebf65bc8c6a 100644
--- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/clzsi2.S
+++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/clzsi2.S
@@ -12,11 +12,9 @@
 #
 #------------------------------------------------------------------------------
 
-  .text
-  .align 2
-  GCC_ASM_EXPORT(__clzsi2)
+#include <AsmMacroIoLib.h>
 
-ASM_PFX(__clzsi2):
+ASM_FUNC(__clzsi2)
   @ frame_needed = 1, uses_anonymous_args = 0
   stmfd  sp!, {r7, lr}
   add  r7, sp, #0
diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/ctzsi2.S b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/ctzsi2.S
index 108072eef720..ea957fb198eb 100644
--- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/ctzsi2.S
+++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/ctzsi2.S
@@ -12,11 +12,9 @@
 #
 #------------------------------------------------------------------------------
 
-  .text
-  .align 2
-  GCC_ASM_EXPORT(__ctzsi2)
+#include <AsmMacroIoLib.h>
 
-ASM_PFX(__ctzsi2):
+ASM_FUNC(__ctzsi2)
   uxth  r3, r0
   cmp  r3, #0
   moveq  ip, #16
diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/div.S b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/div.S
index faf70dbf4598..277f4718880f 100644
--- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/div.S
+++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/div.S
@@ -12,12 +12,7 @@
 #
 #------------------------------------------------------------------------------
 
-.text
-.align 2
-GCC_ASM_EXPORT(__aeabi_uidiv)
-GCC_ASM_EXPORT(__aeabi_uidivmod)
-GCC_ASM_EXPORT(__aeabi_idiv)
-GCC_ASM_EXPORT(__aeabi_idivmod)
+#include <AsmMacroIoLib.h>
 
 #    AREA  Math, CODE, READONLY
 
@@ -34,11 +29,11 @@ ASM_PFX(__aeabi_uidiv):
 ASM_PFX(__aeabi_uidivmod):
   rsbs    r12, r1, r0, LSR #4
   mov     r2, #0
-  bcc     ASM_PFX(__arm_div4)
+  bcc     .L__arm_div4
   rsbs    r12, r1, r0, LSR #8
-  bcc     ASM_PFX(__arm_div8)
+  bcc     .L__arm_div8
   mov     r3, #0
-  b       ASM_PFX(__arm_div_large)
+  b       .L__arm_div_large
 
 #
 #INT32
diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/divdi3.S b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/divdi3.S
index 23c8e8ffbf68..ce55951d3cf7 100644
--- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/divdi3.S
+++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/divdi3.S
@@ -12,11 +12,9 @@
 #
 #------------------------------------------------------------------------------
 
-  .text
-  .align 2
-  GCC_ASM_EXPORT(__divdi3)
+#include <AsmMacroIoLib.h>
 
-ASM_PFX(__divdi3):
+ASM_FUNC(__divdi3)
   @ args = 0, pretend = 0, frame = 0
   @ frame_needed = 1, uses_anonymous_args = 0
   stmfd  sp!, {r4, r5, r7, lr}
diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/divsi3.S b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/divsi3.S
index d585146878d0..835f1c51718f 100644
--- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/divsi3.S
+++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/divsi3.S
@@ -12,11 +12,9 @@
 #
 #------------------------------------------------------------------------------
 
-  .text
-  .align 2
-  GCC_ASM_EXPORT(__divsi3)
+#include <AsmMacroIoLib.h>
 
-ASM_PFX(__divsi3):
+ASM_FUNC(__divsi3)
   eor  r3, r0, r0, asr #31
   eor  r2, r1, r1, asr #31
   stmfd  sp!, {r4, r5, r7, lr}
diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/ldivmod.S b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/ldivmod.S
index e7a05de58913..98632cf445cc 100644
--- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/ldivmod.S
+++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/ldivmod.S
@@ -12,10 +12,7 @@
 //
 //------------------------------------------------------------------------------
 
-
-  .text
-  .align 2
-  GCC_ASM_EXPORT(__aeabi_ldivmod)
+#include <AsmMacroIoLib.h>
 
 //
 // A pair of (unsigned) long longs is returned in {{r0, r1}, {r2, r3}},
@@ -29,7 +26,7 @@
 //  )//
 //
 
-ASM_PFX(__aeabi_ldivmod):
+ASM_FUNC(__aeabi_ldivmod)
     push     {r4,lr}
     asrs     r4,r1,#1
     eor      r4,r4,r3,LSR #1
diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/llsl.S b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/llsl.S
index ba8ab1cf5870..f72aca97c137 100644
--- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/llsl.S
+++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/llsl.S
@@ -12,10 +12,7 @@
 #
 #------------------------------------------------------------------------------
 
-
-.text
-.align 2
-GCC_ASM_EXPORT(__aeabi_llsl)
+#include <AsmMacroIoLib.h>
 
 #
 #VOID
@@ -26,7 +23,7 @@ GCC_ASM_EXPORT(__aeabi_llsl)
 # IN  UINT32  Size
 # );
 #
-ASM_PFX(__aeabi_llsl):
+ASM_FUNC(__aeabi_llsl)
     subs     r3,r2,#0x20
     bpl      1f
     rsb      r3,r2,#0x20
diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/llsr.S b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/llsr.S
index 3d2c106270e7..6908bd6b7c08 100644
--- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/llsr.S
+++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/llsr.S
@@ -12,12 +12,8 @@
 #
 #------------------------------------------------------------------------------
 
+#include <AsmMacroIoLib.h>
 
-.text
-.align 2
-GCC_ASM_EXPORT(__aeabi_llsr)
-
-#
 #VOID
 #EFIAPI
 #__aeabi_llsr (
@@ -26,7 +22,7 @@ GCC_ASM_EXPORT(__aeabi_llsr)
 # IN  UINT32  Size
 # );
 #
-ASM_PFX(__aeabi_llsr):
+ASM_FUNC(__aeabi_llsr)
     subs     r3,r2,#0x20
     bpl      1f
     rsb      r3,r2,#0x20
diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/lshrdi3.S b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/lshrdi3.S
index a3133206a5df..e17391184a74 100644
--- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/lshrdi3.S
+++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/lshrdi3.S
@@ -12,11 +12,9 @@
 #
 #------------------------------------------------------------------------------
 
-  .text
-  .align 2
-  GCC_ASM_EXPORT(__lshrdi3)
+#include <AsmMacroIoLib.h>
 
-ASM_PFX(__lshrdi3):
+ASM_FUNC(__lshrdi3)
   cmp  r2, #31
   bls  L2
   cmp  r2, #63
diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/memmove.S b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/memmove.S
index 79f95b007d80..d10860d80689 100644
--- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/memmove.S
+++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/memmove.S
@@ -12,9 +12,7 @@
 #
 #------------------------------------------------------------------------------
 
-  .text
-  .align 2
-  GCC_ASM_EXPORT (memmove)
+#include <AsmMacroIoLib.h>
 
 # VOID
 # EFIAPI
@@ -23,7 +21,7 @@
 #  IN  CONST VOID    *Source,
 #  IN  UINT32        Size
 #  );
-ASM_PFX(memmove):
+ASM_FUNC(memmove)
   CMP     r2, #0
   BXEQ    lr
   CMP     r0, r1
diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/moddi3.S b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/moddi3.S
index 7b618eb06bdb..c8c87d8e23f9 100644
--- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/moddi3.S
+++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/moddi3.S
@@ -12,11 +12,9 @@
 #
 #------------------------------------------------------------------------------
 
-  .text
-  .align 2
-  GCC_ASM_EXPORT(__moddi3)
+#include <AsmMacroIoLib.h>
 
-ASM_PFX(__moddi3):
+ASM_FUNC(__moddi3)
   stmfd  sp!, {r4, r5, r7, lr}
   mov  r4, r1, asr #31
   add  r7, sp, #8
diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/modsi3.S b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/modsi3.S
index 047501e929bd..29e2df92b02f 100644
--- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/modsi3.S
+++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/modsi3.S
@@ -12,11 +12,9 @@
 #
 #------------------------------------------------------------------------------
 
-  .text
-  .align 2
-  GCC_ASM_EXPORT(__modsi3)
+#include <AsmMacroIoLib.h>
 
-ASM_PFX(__modsi3):
+ASM_FUNC(__modsi3)
   stmfd  sp!, {r4, r5, r7, lr}
   add  r7, sp, #8
   mov  r5, r0
diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/muldi3.S b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/muldi3.S
index dff61ef7a44b..a6689fcee958 100644
--- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/muldi3.S
+++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/muldi3.S
@@ -12,11 +12,9 @@
 #
 #------------------------------------------------------------------------------
 
-  .text
-  .align 2
-  GCC_ASM_EXPORT(__muldi3)
+#include <AsmMacroIoLib.h>
 
-ASM_PFX(__muldi3):
+ASM_FUNC(__muldi3)
   stmfd  sp!, {r4, r5, r6, r7, lr}
   add  r7, sp, #12
   stmfd  sp!, {r8, r10, r11}
diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/switch16.S b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/switch16.S
index 09c9004ddfff..6de2d4513c82 100644
--- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/switch16.S
+++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/switch16.S
@@ -13,13 +13,11 @@
 #**/
 #
 
-.text
-.syntax unified
-.p2align 2
+#include <AsmMacroIoLib.h>
 
-GCC_ASM_EXPORT(__switch16)
+.syntax unified
 
-ASM_PFX(__switch16):
+ASM_FUNC(__switch16)
     ldrh      ip, [lr, #-1]
     cmp       r0, ip
     add       r0, lr, r0, lsl #1
diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/switch32.S b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/switch32.S
index 5b8fd34733cd..f4b3343a787e 100644
--- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/switch32.S
+++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/switch32.S
@@ -13,13 +13,11 @@
 #**/
 #
 
-.text
-.syntax unified
-.p2align 2
+#include <AsmMacroIoLib.h>
 
-GCC_ASM_EXPORT(__switch32)
+.syntax unified
 
-ASM_PFX(__switch32):
+ASM_FUNC(__switch32)
     ldr     ip, [lr, #-1]
     cmp     r0, ip
     add     r0, lr, r0, lsl #2
diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/switch8.S b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/switch8.S
index 871c7c05f7a4..7f84b16c7917 100644
--- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/switch8.S
+++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/switch8.S
@@ -13,13 +13,11 @@
 #**/
 #
 
-.text
-.syntax unified
-.p2align 2
+#include <AsmMacroIoLib.h>
 
-GCC_ASM_EXPORT(__switch8)
+.syntax unified
 
-ASM_PFX(__switch8):
+ASM_FUNC(__switch8)
     ldrb      ip, [lr, #-1]
     cmp       r0, ip
     ldrsbcc   r0, [lr, r0]
diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/switchu8.S b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/switchu8.S
index 5849998eaf32..7c94dd4fad27 100644
--- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/switchu8.S
+++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/switchu8.S
@@ -13,14 +13,11 @@
 #**/
 #
 
-.text
-.syntax unified
-.p2align 2
-
-GCC_ASM_EXPORT(__switchu8)
+#include <AsmMacroIoLib.h>
 
+.syntax unified
 
-ASM_PFX(__switchu8):
+ASM_FUNC(__switchu8)
     ldrb      ip,[lr,#-1]
     cmp       r0,ip
     ldrbcc    r0,[lr,r0]
diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/ucmpdi2.S b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/ucmpdi2.S
index da57423bf1e3..472bbc10563c 100644
--- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/ucmpdi2.S
+++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/ucmpdi2.S
@@ -12,11 +12,9 @@
 #
 #------------------------------------------------------------------------------
 
-  .text
-  .align 2
-  GCC_ASM_EXPORT(__ucmpdi2)
+#include <AsmMacroIoLib.h>
 
-ASM_PFX(__ucmpdi2):
+ASM_FUNC(__ucmpdi2)
   stmfd  sp!, {r4, r5, r8, lr}
   cmp  r1, r3
   mov  r8, r0
diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/udivdi3.S b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/udivdi3.S
index cbfb12735003..e173d4ada786 100644
--- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/udivdi3.S
+++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/udivdi3.S
@@ -12,11 +12,9 @@
 #
 #------------------------------------------------------------------------------
 
-  .text
-  .align 2
-  GCC_ASM_EXPORT(__udivdi3)
+#include <AsmMacroIoLib.h>
 
-ASM_PFX(__udivdi3):
+ASM_FUNC(__udivdi3)
   stmfd  sp!, {r7, lr}
   add  r7, sp, #0
   sub  sp, sp, #8
diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/udivmoddi4.S b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/udivmoddi4.S
index 42f4ba404730..b87872d39e07 100644
--- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/udivmoddi4.S
+++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/udivmoddi4.S
@@ -12,12 +12,11 @@
 #
 #------------------------------------------------------------------------------
 
-  .text
+#include <AsmMacroIoLib.h>
+
   .syntax unified
-  .align 2
-  GCC_ASM_EXPORT(__udivmoddi4)
 
-ASM_PFX(__udivmoddi4):
+ASM_FUNC(__udivmoddi4)
   stmfd  sp!, {r4, r5, r6, r7, lr}
   add  r7, sp, #12
   stmfd  sp!, {r10, r11}
diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/udivsi3.S b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/udivsi3.S
index 080aa51c3c54..b70d1d7f0322 100644
--- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/udivsi3.S
+++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/udivsi3.S
@@ -12,12 +12,11 @@
 #
 #------------------------------------------------------------------------------
 
-  .text
+#include <AsmMacroIoLib.h>
+
   .syntax unified
-  .align 2
-  GCC_ASM_EXPORT(__udivsi3)
 
-ASM_PFX(__udivsi3):
+ASM_FUNC(__udivsi3)
   cmp  r1, #0
   cmpne  r0, #0
   stmfd  sp!, {r4, r5, r7, lr}
diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/umoddi3.S b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/umoddi3.S
index 6b718a657474..3edff1b715a1 100644
--- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/umoddi3.S
+++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/umoddi3.S
@@ -12,11 +12,9 @@
 #
 #------------------------------------------------------------------------------
 
-  .text
-  .align 2
-  GCC_ASM_EXPORT(__umoddi3)
+#include <AsmMacroIoLib.h>
 
-ASM_PFX(__umoddi3):
+ASM_FUNC(__umoddi3)
   stmfd  sp!, {r7, lr}
   add  r7, sp, #0
   sub  sp, sp, #16
diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/umodsi3.S b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/umodsi3.S
index 76c26beb0b19..2a300601d0f5 100644
--- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/umodsi3.S
+++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/umodsi3.S
@@ -12,11 +12,9 @@
 #
 #------------------------------------------------------------------------------
 
-  .text
-  .align 2
-  GCC_ASM_EXPORT(__umodsi3)
+#include <AsmMacroIoLib.h>
 
-ASM_PFX(__umodsi3):
+ASM_FUNC(__umodsi3)
   stmfd  sp!, {r4, r5, r7, lr}
   add  r7, sp, #8
   mov  r5, r0
