On 3 December 2015 at 20:22, Cohen, Eugene <eug...@hp.com> wrote:
> This has the effect of splitting assembly functions into their own sections
> so the linker can remove unused ones to save space.
>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Eugene Cohen <eug...@hp.com>

Reviewed-by: Ard Biesheuvel <ard.biesheu...@gmail.com>

Committed as SVN r19109

Thanks Eugene!

> ---
>  .../ArmCpuLib/ArmCortexA9Lib/ArmCortexA9Helper.asm |   5 +-
>  ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.asm       |  26 ++---
>  ArmPkg/Library/ArmHvcLib/Arm/ArmHvc.asm            |   5 +-
>  ArmPkg/Library/ArmLib/ArmV7/ArmLibSupportV7.asm    |  46 +++------
>  .../Library/ArmLib/ArmV7/ArmV7ArchTimerSupport.asm |  64 +++++-------
>  ArmPkg/Library/ArmLib/ArmV7/ArmV7Support.asm       | 109 
> +++++++--------------
>  ArmPkg/Library/ArmLib/Common/Arm/ArmLibSupport.asm |  84 ++++++----------
>  ArmPkg/Library/ArmSmcLib/Arm/ArmSmc.asm            |   5 +-
>  ArmPkg/Library/ArmSmcLibNull/Arm/ArmSmcNull.asm    |   5 +-
>  ArmPkg/Library/BaseMemoryLibStm/Arm/CopyMem.asm    |   5 +-
>  ArmPkg/Library/BaseMemoryLibStm/Arm/SetMem.asm     |   5 +-
>  .../Library/BaseMemoryLibStm/BaseMemoryLibStm.inf  |   1 +
>  ArmPkg/Library/BaseMemoryLibVstm/Arm/CopyMem.asm   |   5 +-
>  ArmPkg/Library/BaseMemoryLibVstm/Arm/SetMem.asm    |   5 +-
>  .../BaseMemoryLibVstm/BaseMemoryLibVstm.inf        |   1 +
>  ArmPkg/Library/CompilerIntrinsicsLib/Arm/lasr.asm  |   5 +-
>  .../Library/CompilerIntrinsicsLib/Arm/ldivmod.asm  |   5 +-
>  ArmPkg/Library/CompilerIntrinsicsLib/Arm/llsl.asm  |   5 +-
>  ArmPkg/Library/CompilerIntrinsicsLib/Arm/llsr.asm  |   5 +-
>  .../Library/CompilerIntrinsicsLib/Arm/memcpy.asm   |   5 +-
>  .../Library/CompilerIntrinsicsLib/Arm/memcpy4.asm  |   5 +-
>  .../Library/CompilerIntrinsicsLib/Arm/memmove.asm  |   5 +-
>  .../Library/CompilerIntrinsicsLib/Arm/switch.asm   |   5 +-
>  ArmPkg/Library/CompilerIntrinsicsLib/Arm/uldiv.asm |   5 +-
>  ArmPkg/Library/CompilerIntrinsicsLib/Arm/uread.asm |   8 +-
>  .../Library/CompilerIntrinsicsLib/Arm/uwrite.asm   |   8 +-
>  .../CompilerIntrinsicsLib.inf                      |   1 +
>  27 files changed, 156 insertions(+), 277 deletions(-)
>
> diff --git a/ArmPkg/Drivers/ArmCpuLib/ArmCortexA9Lib/ArmCortexA9Helper.asm 
> b/ArmPkg/Drivers/ArmCpuLib/ArmCortexA9Lib/ArmCortexA9Helper.asm
> index 7150834..1417c9a 100644
> --- a/ArmPkg/Drivers/ArmCpuLib/ArmCortexA9Lib/ArmCortexA9Helper.asm
> +++ b/ArmPkg/Drivers/ArmCpuLib/ArmCortexA9Lib/ArmCortexA9Helper.asm
> @@ -15,16 +15,15 @@
>  #include <Library/ArmCpuLib.h>
>  #include <Chipset/ArmCortexA9.h>
>
> +  INCLUDE AsmMacroExport.inc
>    INCLUDE AsmMacroIoLib.inc
>
> -  EXPORT  ArmGetScuBaseAddress
>
>    PRESERVE8
> -  AREA    ArmCortexA9Helper, CODE, READONLY
>
>  // IN None
>  // OUT r0 = SCU Base Address
> -ArmGetScuBaseAddress
> + RVCT_ASM_EXPORT ArmGetScuBaseAddress
>    // Read Configuration Base Address Register. ArmCBar cannot be called to 
> get
>    // the Configuration BAR as a stack is not necessary setup. The SCU is at 
> the
>    // offset 0x0000 from the Private Memory Region.
> diff --git a/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.asm 
> b/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.asm
> index 92c3236..4228fb5 100644
> --- a/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.asm
> +++ b/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.asm
> @@ -13,23 +13,15 @@
>
>  // For the moment we assume this will run in SVC mode on ARMv7
>
> -    EXPORT  ArmGicV3GetControlSystemRegisterEnable
> -    EXPORT  ArmGicV3SetControlSystemRegisterEnable
> -    EXPORT  ArmGicV3EnableInterruptInterface
> -    EXPORT  ArmGicV3DisableInterruptInterface
> -    EXPORT  ArmGicV3EndOfInterrupt
> -    EXPORT  ArmGicV3AcknowledgeInterrupt
> -    EXPORT  ArmGicV3SetPriorityMask
> -    EXPORT  ArmGicV3SetBinaryPointer
>
> -    AREA ArmGicV3, CODE, READONLY
> +    INCLUDE AsmMacroExport.inc
>
>  //UINT32
>  //EFIAPI
>  //ArmGicGetControlSystemRegisterEnable (
>  //  VOID
>  //  );
> -ArmGicV3GetControlSystemRegisterEnable
> + RVCT_ASM_EXPORT ArmGicV3GetControlSystemRegisterEnable
>          mrc     p15, 0, r0, c12, c12, 5 // ICC_SRE
>          bx      lr
>
> @@ -38,7 +30,7 @@ ArmGicV3GetControlSystemRegisterEnable
>  //ArmGicSetControlSystemRegisterEnable (
>  //  IN UINT32         ControlSystemRegisterEnable
>  //  );
> -ArmGicV3SetControlSystemRegisterEnable
> + RVCT_ASM_EXPORT ArmGicV3SetControlSystemRegisterEnable
>          mcr     p15, 0, r0, c12, c12, 5 // ICC_SRE
>          isb
>          bx      lr
> @@ -47,7 +39,7 @@ ArmGicV3SetControlSystemRegisterEnable
>  //ArmGicV3EnableInterruptInterface (
>  //  VOID
>  //  );
> -ArmGicV3EnableInterruptInterface
> + RVCT_ASM_EXPORT ArmGicV3EnableInterruptInterface
>          mov     r0, #1
>          mcr     p15, 0, r0, c12, c12, 7 // ICC_IGRPEN1
>          bx      lr
> @@ -56,7 +48,7 @@ ArmGicV3EnableInterruptInterface
>  //ArmGicV3DisableInterruptInterface (
>  //  VOID
>  //  );
> -ArmGicV3DisableInterruptInterface
> + RVCT_ASM_EXPORT ArmGicV3DisableInterruptInterface
>          mov     r0, #0
>          mcr     p15, 0, r0, c12, c12, 7 // ICC_IGRPEN1
>          bx      lr
> @@ -65,7 +57,7 @@ ArmGicV3DisableInterruptInterface
>  //ArmGicV3EndOfInterrupt (
>  //  IN UINTN InterruptId
>  //  );
> -ArmGicV3EndOfInterrupt
> + RVCT_ASM_EXPORT ArmGicV3EndOfInterrupt
>          mcr     p15, 0, r0, c12, c12, 1 //ICC_EOIR1
>          bx      lr
>
> @@ -73,7 +65,7 @@ ArmGicV3EndOfInterrupt
>  //ArmGicV3AcknowledgeInterrupt (
>  //  VOID
>  //  );
> -ArmGicV3AcknowledgeInterrupt
> + RVCT_ASM_EXPORT ArmGicV3AcknowledgeInterrupt
>          mrc     p15, 0, r0, c12, c8, 0 //ICC_IAR1
>          bx      lr
>
> @@ -81,7 +73,7 @@ ArmGicV3AcknowledgeInterrupt
>  //ArmGicV3SetPriorityMask (
>  //  IN UINTN                  Priority
>  //  );
> -ArmGicV3SetPriorityMask
> + RVCT_ASM_EXPORT ArmGicV3SetPriorityMask
>          mcr     p15, 0, r0, c4, c6, 0 //ICC_PMR
>          bx      lr
>
> @@ -89,7 +81,7 @@ ArmGicV3SetPriorityMask
>  //ArmGicV3SetBinaryPointer (
>  //  IN UINTN                  BinaryPoint
>  //  );
> -ArmGicV3SetBinaryPointer
> + RVCT_ASM_EXPORT ArmGicV3SetBinaryPointer
>          mcr     p15, 0, r0, c12, c12, 3 //ICC_BPR1
>          bx      lr
>
> diff --git a/ArmPkg/Library/ArmHvcLib/Arm/ArmHvc.asm 
> b/ArmPkg/Library/ArmHvcLib/Arm/ArmHvc.asm
> index bac26fb..fe4b174 100644
> --- a/ArmPkg/Library/ArmHvcLib/Arm/ArmHvc.asm
> +++ b/ArmPkg/Library/ArmHvcLib/Arm/ArmHvc.asm
> @@ -12,11 +12,10 @@
>  //
>  //
>
> -    EXPORT ArmCallHvc
>
> -    AREA   ArmHvc, CODE, READONLY
> +    INCLUDE AsmMacroExport.inc
>
> -ArmCallHvc
> + RVCT_ASM_EXPORT ArmCallHvc
>      push    {r4-r8}
>      // r0 will be popped just after the HVC call
>      push     {r0}
> diff --git a/ArmPkg/Library/ArmLib/ArmV7/ArmLibSupportV7.asm 
> b/ArmPkg/Library/ArmLib/ArmV7/ArmLibSupportV7.asm
> index 8179232..cbbe8db 100644
> --- a/ArmPkg/Library/ArmLib/ArmV7/ArmLibSupportV7.asm
> +++ b/ArmPkg/Library/ArmLib/ArmV7/ArmLibSupportV7.asm
> @@ -14,27 +14,13 @@
>  
> //------------------------------------------------------------------------------
>
>
> -    EXPORT  ArmIsMpCore
> -    EXPORT  ArmHasMpExtensions
> -    EXPORT  ArmEnableAsynchronousAbort
> -    EXPORT  ArmDisableAsynchronousAbort
> -    EXPORT  ArmEnableIrq
> -    EXPORT  ArmDisableIrq
> -    EXPORT  ArmEnableFiq
> -    EXPORT  ArmDisableFiq
> -    EXPORT  ArmEnableInterrupts
> -    EXPORT  ArmDisableInterrupts
> -    EXPORT  ReadCCSIDR
> -    EXPORT  ReadCLIDR
> -    EXPORT  ArmReadNsacr
> -    EXPORT  ArmWriteNsacr
> -
> -    AREA ArmLibSupportV7, CODE, READONLY
> +
> +    INCLUDE AsmMacroExport.inc
>
>
>  
> //------------------------------------------------------------------------------
>
> -ArmIsMpCore
> + RVCT_ASM_EXPORT ArmIsMpCore
>    mrc     p15,0,R0,c0,c0,5
>    // Get Multiprocessing extension (bit31) & U bit (bit30)
>    and     R0, R0, #0xC0000000
> @@ -44,48 +30,48 @@ ArmIsMpCore
>    movne   R0, #0
>    bx      LR
>
> -ArmHasMpExtensions
> + RVCT_ASM_EXPORT ArmHasMpExtensions
>    mrc     p15,0,R0,c0,c0,5
>    // Get Multiprocessing extension (bit31)
>    lsr     R0, R0, #31
>    bx      LR
>
> -ArmEnableAsynchronousAbort
> + RVCT_ASM_EXPORT ArmEnableAsynchronousAbort
>    cpsie   a
>    isb
>    bx      LR
>
> -ArmDisableAsynchronousAbort
> + RVCT_ASM_EXPORT ArmDisableAsynchronousAbort
>    cpsid   a
>    isb
>    bx      LR
>
> -ArmEnableIrq
> + RVCT_ASM_EXPORT ArmEnableIrq
>    cpsie   i
>    isb
>    bx      LR
>
> -ArmDisableIrq
> + RVCT_ASM_EXPORT ArmDisableIrq
>    cpsid   i
>    isb
>    bx      LR
>
> -ArmEnableFiq
> + RVCT_ASM_EXPORT ArmEnableFiq
>    cpsie   f
>    isb
>    bx      LR
>
> -ArmDisableFiq
> + RVCT_ASM_EXPORT ArmDisableFiq
>    cpsid   f
>    isb
>    bx      LR
>
> -ArmEnableInterrupts
> + RVCT_ASM_EXPORT ArmEnableInterrupts
>    cpsie   if
>    isb
>    bx      LR
>
> -ArmDisableInterrupts
> + RVCT_ASM_EXPORT ArmDisableInterrupts
>    cpsid   if
>    isb
>    bx      LR
> @@ -94,7 +80,7 @@ ArmDisableInterrupts
>  // ReadCCSIDR (
>  //   IN UINT32 CSSELR
>  //   )
> -ReadCCSIDR
> + RVCT_ASM_EXPORT ReadCCSIDR
>    mcr p15,2,r0,c0,c0,0   ; Write Cache Size Selection Register (CSSELR)
>    isb
>    mrc p15,1,r0,c0,c0,0 ; Read current CP15 Cache Size ID Register (CCSIDR)
> @@ -104,15 +90,15 @@ ReadCCSIDR
>  // ReadCLIDR (
>  //   IN UINT32 CSSELR
>  //   )
> -ReadCLIDR
> + RVCT_ASM_EXPORT ReadCLIDR
>    mrc p15,1,r0,c0,c0,1 ; Read CP15 Cache Level ID Register
>    bx  lr
>
> -ArmReadNsacr
> + RVCT_ASM_EXPORT ArmReadNsacr
>    mrc     p15, 0, r0, c1, c1, 2
>    bx      lr
>
> -ArmWriteNsacr
> + RVCT_ASM_EXPORT ArmWriteNsacr
>    mcr     p15, 0, r0, c1, c1, 2
>    bx      lr
>
> diff --git a/ArmPkg/Library/ArmLib/ArmV7/ArmV7ArchTimerSupport.asm 
> b/ArmPkg/Library/ArmLib/ArmV7/ArmV7ArchTimerSupport.asm
> index 514830d..a53dd60 100644
> --- a/ArmPkg/Library/ArmLib/ArmV7/ArmV7ArchTimerSupport.asm
> +++ b/ArmPkg/Library/ArmLib/ArmV7/ArmV7ArchTimerSupport.asm
> @@ -12,107 +12,87 @@
>  //
>  
> //------------------------------------------------------------------------------
>
> -    EXPORT  ArmReadCntFrq
> -    EXPORT  ArmWriteCntFrq
> -    EXPORT  ArmReadCntPct
> -    EXPORT  ArmReadCntkCtl
> -    EXPORT  ArmWriteCntkCtl
> -    EXPORT  ArmReadCntpTval
> -    EXPORT  ArmWriteCntpTval
> -    EXPORT  ArmReadCntpCtl
> -    EXPORT  ArmWriteCntpCtl
> -    EXPORT  ArmReadCntvTval
> -    EXPORT  ArmWriteCntvTval
> -    EXPORT  ArmReadCntvCtl
> -    EXPORT  ArmWriteCntvCtl
> -    EXPORT  ArmReadCntvCt
> -    EXPORT  ArmReadCntpCval
> -    EXPORT  ArmWriteCntpCval
> -    EXPORT  ArmReadCntvCval
> -    EXPORT  ArmWriteCntvCval
> -    EXPORT  ArmReadCntvOff
> -    EXPORT  ArmWriteCntvOff
> -
> -    AREA    ArmV7ArchTimerSupport, CODE, READONLY
> +
> +    INCLUDE AsmMacroExport.inc
>      PRESERVE8
>
> -ArmReadCntFrq
> + RVCT_ASM_EXPORT ArmReadCntFrq
>    mrc    p15, 0, r0, c14, c0, 0    ; Read CNTFRQ
>    bx     lr
>
> -ArmWriteCntFrq
> + RVCT_ASM_EXPORT ArmWriteCntFrq
>    mcr    p15, 0, r0, c14, c0, 0    ; Write to CNTFRQ
>    bx     lr
>
> -ArmReadCntPct
> + RVCT_ASM_EXPORT ArmReadCntPct
>    mrrc   p15, 0, r0, r1, c14       ; Read CNTPT (Physical counter register)
>    bx     lr
>
> -ArmReadCntkCtl
> + RVCT_ASM_EXPORT ArmReadCntkCtl
>    mrc    p15, 0, r0, c14, c1, 0    ; Read CNTK_CTL (Timer PL1 Control 
> Register)
>    bx     lr
>
> -ArmWriteCntkCtl
> + RVCT_ASM_EXPORT ArmWriteCntkCtl
>    mcr    p15, 0, r0, c14, c1, 0    ; Write to CNTK_CTL (Timer PL1 Control 
> Register)
>    bx     lr
>
> -ArmReadCntpTval
> + RVCT_ASM_EXPORT ArmReadCntpTval
>    mrc    p15, 0, r0, c14, c2, 0    ; Read CNTP_TVAL (PL1 physical timer 
> value register)
>    bx     lr
>
> -ArmWriteCntpTval
> + RVCT_ASM_EXPORT ArmWriteCntpTval
>    mcr    p15, 0, r0, c14, c2, 0    ; Write to CNTP_TVAL (PL1 physical timer 
> value register)
>    bx     lr
>
> -ArmReadCntpCtl
> + RVCT_ASM_EXPORT ArmReadCntpCtl
>    mrc    p15, 0, r0, c14, c2, 1    ; Read CNTP_CTL (PL1 Physical Timer 
> Control Register)
>    bx     lr
>
> -ArmWriteCntpCtl
> + RVCT_ASM_EXPORT ArmWriteCntpCtl
>    mcr    p15, 0, r0, c14, c2, 1    ; Write to  CNTP_CTL (PL1 Physical Timer 
> Control Register)
>    bx     lr
>
> -ArmReadCntvTval
> + RVCT_ASM_EXPORT ArmReadCntvTval
>    mrc    p15, 0, r0, c14, c3, 0    ; Read CNTV_TVAL (Virtual Timer Value 
> register)
>    bx     lr
>
> -ArmWriteCntvTval
> + RVCT_ASM_EXPORT ArmWriteCntvTval
>    mcr    p15, 0, r0, c14, c3, 0    ; Write to CNTV_TVAL (Virtual Timer Value 
> register)
>    bx     lr
>
> -ArmReadCntvCtl
> + RVCT_ASM_EXPORT ArmReadCntvCtl
>    mrc    p15, 0, r0, c14, c3, 1    ; Read CNTV_CTL (Virtual Timer Control 
> Register)
>    bx     lr
>
> -ArmWriteCntvCtl
> + RVCT_ASM_EXPORT ArmWriteCntvCtl
>    mcr    p15, 0, r0, c14, c3, 1    ; Write to CNTV_CTL (Virtual Timer 
> Control Register)
>    bx     lr
>
> -ArmReadCntvCt
> + RVCT_ASM_EXPORT ArmReadCntvCt
>    mrrc   p15, 1, r0, r1, c14       ; Read CNTVCT  (Virtual Count Register)
>    bx     lr
>
> -ArmReadCntpCval
> + RVCT_ASM_EXPORT ArmReadCntpCval
>    mrrc   p15, 2, r0, r1, c14       ; Read CNTP_CTVAL (Physical Timer Compare 
> Value Register)
>    bx     lr
>
> -ArmWriteCntpCval
> + RVCT_ASM_EXPORT ArmWriteCntpCval
>    mcrr   p15, 2, r0, r1, c14       ; Write to CNTP_CTVAL (Physical Timer 
> Compare Value Register)
>    bx     lr
>
> -ArmReadCntvCval
> + RVCT_ASM_EXPORT ArmReadCntvCval
>    mrrc   p15, 3, r0, r1, c14       ; Read CNTV_CTVAL (Virtual Timer Compare 
> Value Register)
>    bx     lr
>
> -ArmWriteCntvCval
> + RVCT_ASM_EXPORT ArmWriteCntvCval
>    mcrr   p15, 3, r0, r1, c14       ; write to  CNTV_CTVAL (Virtual Timer 
> Compare Value Register)
>    bx     lr
>
> -ArmReadCntvOff
> + RVCT_ASM_EXPORT ArmReadCntvOff
>    mrrc   p15, 4, r0, r1, c14       ; Read CNTVOFF (virtual Offset register)
>    bx     lr
>
> -ArmWriteCntvOff
> + RVCT_ASM_EXPORT ArmWriteCntvOff
>    mcrr   p15, 4, r0, r1, c14       ; Write to CNTVOFF (Virtual Offset 
> register)
>    bx     lr
>
> diff --git a/ArmPkg/Library/ArmLib/ArmV7/ArmV7Support.asm 
> b/ArmPkg/Library/ArmLib/ArmV7/ArmV7Support.asm
> index 542157b..df7e22d 100644
> --- a/ArmPkg/Library/ArmLib/ArmV7/ArmV7Support.asm
> +++ b/ArmPkg/Library/ArmLib/ArmV7/ArmV7Support.asm
> @@ -13,43 +13,8 @@
>  //
>  
> //------------------------------------------------------------------------------
>
> -    EXPORT  ArmInvalidateInstructionCache
> -    EXPORT  ArmInvalidateDataCacheEntryByMVA
> -    EXPORT  ArmCleanDataCacheEntryByMVA
> -    EXPORT  ArmCleanInvalidateDataCacheEntryByMVA
> -    EXPORT  ArmInvalidateDataCacheEntryBySetWay
> -    EXPORT  ArmCleanDataCacheEntryBySetWay
> -    EXPORT  ArmCleanInvalidateDataCacheEntryBySetWay
> -    EXPORT  ArmEnableMmu
> -    EXPORT  ArmDisableMmu
> -    EXPORT  ArmDisableCachesAndMmu
> -    EXPORT  ArmMmuEnabled
> -    EXPORT  ArmEnableDataCache
> -    EXPORT  ArmDisableDataCache
> -    EXPORT  ArmEnableInstructionCache
> -    EXPORT  ArmDisableInstructionCache
> -    EXPORT  ArmEnableSWPInstruction
> -    EXPORT  ArmEnableBranchPrediction
> -    EXPORT  ArmDisableBranchPrediction
> -    EXPORT  ArmSetLowVectors
> -    EXPORT  ArmSetHighVectors
> -    EXPORT  ArmV7AllDataCachesOperation
> -    EXPORT  ArmDataMemoryBarrier
> -    EXPORT  ArmDataSynchronizationBarrier
> -    EXPORT  ArmInstructionSynchronizationBarrier
> -    EXPORT  ArmReadVBar
> -    EXPORT  ArmWriteVBar
> -    EXPORT  ArmEnableVFP
> -    EXPORT  ArmCallWFI
> -    EXPORT  ArmReadCbar
> -    EXPORT  ArmReadMpidr
> -    EXPORT  ArmReadTpidrurw
> -    EXPORT  ArmWriteTpidrurw
> -    EXPORT  ArmIsArchTimerImplemented
> -    EXPORT  ArmReadIdPfr1
> -    EXPORT  ArmReadIdMmfr0
> -
> -    AREA    ArmV7Support, CODE, READONLY
> +
> +    INCLUDE AsmMacroExport.inc
>      PRESERVE8
>
>  DC_ON           EQU     ( 0x1:SHL:2 )
> @@ -60,41 +25,41 @@ CTRL_B_BIT      EQU     (1 << 7)
>  CTRL_I_BIT      EQU     (1 << 12)
>
>
> -ArmInvalidateDataCacheEntryByMVA
> + RVCT_ASM_EXPORT ArmInvalidateDataCacheEntryByMVA
>    mcr     p15, 0, r0, c7, c6, 1   ; invalidate single data cache line
>    bx      lr
>
> -ArmCleanDataCacheEntryByMVA
> + RVCT_ASM_EXPORT ArmCleanDataCacheEntryByMVA
>    mcr     p15, 0, r0, c7, c10, 1  ; clean single data cache line
>    bx      lr
>
>
> -ArmCleanInvalidateDataCacheEntryByMVA
> + RVCT_ASM_EXPORT ArmCleanInvalidateDataCacheEntryByMVA
>    mcr     p15, 0, r0, c7, c14, 1  ; clean and invalidate single data cache 
> line
>    bx      lr
>
>
> -ArmInvalidateDataCacheEntryBySetWay
> + RVCT_ASM_EXPORT ArmInvalidateDataCacheEntryBySetWay
>    mcr     p15, 0, r0, c7, c6, 2        ; Invalidate this line
>    bx      lr
>
>
> -ArmCleanInvalidateDataCacheEntryBySetWay
> + RVCT_ASM_EXPORT ArmCleanInvalidateDataCacheEntryBySetWay
>    mcr     p15, 0, r0, c7, c14, 2       ; Clean and Invalidate this line
>    bx      lr
>
>
> -ArmCleanDataCacheEntryBySetWay
> + RVCT_ASM_EXPORT ArmCleanDataCacheEntryBySetWay
>    mcr     p15, 0, r0, c7, c10, 2       ; Clean this line
>    bx      lr
>
>
> -ArmInvalidateInstructionCache
> + RVCT_ASM_EXPORT ArmInvalidateInstructionCache
>    mcr     p15,0,R0,c7,c5,0      ;Invalidate entire instruction cache
>    isb
>    bx      LR
>
> -ArmEnableMmu
> + RVCT_ASM_EXPORT ArmEnableMmu
>    mrc     p15,0,R0,c1,c0,0      ; Read SCTLR into R0 (Read control register 
> configuration data)
>    orr     R0,R0,#1              ; Set SCTLR.M bit : Enable MMU
>    mcr     p15,0,R0,c1,c0,0      ; Write R0 into SCTLR (Write control 
> register configuration data)
> @@ -102,7 +67,7 @@ ArmEnableMmu
>    isb
>    bx      LR
>
> -ArmDisableMmu
> + RVCT_ASM_EXPORT ArmDisableMmu
>    mrc     p15,0,R0,c1,c0,0      ; Read SCTLR into R0 (Read control register 
> configuration data)
>    bic     R0,R0,#1              ; Clear SCTLR.M bit : Disable MMU
>    mcr     p15,0,R0,c1,c0,0      ; Write R0 into SCTLR (Write control 
> register configuration data)
> @@ -113,7 +78,7 @@ ArmDisableMmu
>    isb
>    bx      LR
>
> -ArmDisableCachesAndMmu
> + RVCT_ASM_EXPORT ArmDisableCachesAndMmu
>    mrc   p15, 0, r0, c1, c0, 0           ; Get control register
>    bic   r0, r0, #CTRL_M_BIT             ; Disable MMU
>    bic   r0, r0, #CTRL_C_BIT             ; Disable D Cache
> @@ -123,12 +88,12 @@ ArmDisableCachesAndMmu
>    isb
>    bx      LR
>
> -ArmMmuEnabled
> + RVCT_ASM_EXPORT ArmMmuEnabled
>    mrc     p15,0,R0,c1,c0,0      ; Read SCTLR into R0 (Read control register 
> configuration data)
>    and     R0,R0,#1
>    bx      LR
>
> -ArmEnableDataCache
> + RVCT_ASM_EXPORT ArmEnableDataCache
>    ldr     R1,=DC_ON             ; Specify SCTLR.C bit : (Data) Cache enable 
> bit
>    mrc     p15,0,R0,c1,c0,0      ; Read SCTLR into R0 (Read control register 
> configuration data)
>    orr     R0,R0,R1              ; Set SCTLR.C bit : Data and unified caches 
> enabled
> @@ -137,7 +102,7 @@ ArmEnableDataCache
>    isb
>    bx      LR
>
> -ArmDisableDataCache
> + RVCT_ASM_EXPORT ArmDisableDataCache
>    ldr     R1,=DC_ON             ; Specify SCTLR.C bit : (Data) Cache enable 
> bit
>    mrc     p15,0,R0,c1,c0,0      ; Read SCTLR into R0 (Read control register 
> configuration data)
>    bic     R0,R0,R1              ; Clear SCTLR.C bit : Data and unified 
> caches disabled
> @@ -146,7 +111,7 @@ ArmDisableDataCache
>    isb
>    bx      LR
>
> -ArmEnableInstructionCache
> + RVCT_ASM_EXPORT ArmEnableInstructionCache
>    ldr     R1,=IC_ON             ; Specify SCTLR.I bit : Instruction cache 
> enable bit
>    mrc     p15,0,R0,c1,c0,0      ; Read SCTLR into R0 (Read control register 
> configuration data)
>    orr     R0,R0,R1              ; Set SCTLR.I bit : Instruction caches 
> enabled
> @@ -155,7 +120,7 @@ ArmEnableInstructionCache
>    isb
>    bx      LR
>
> -ArmDisableInstructionCache
> + RVCT_ASM_EXPORT ArmDisableInstructionCache
>    ldr     R1,=IC_ON             ; Specify SCTLR.I bit : Instruction cache 
> enable bit
>    mrc     p15,0,R0,c1,c0,0      ; Read SCTLR into R0 (Read control register 
> configuration data)
>    BIC     R0,R0,R1              ; Clear SCTLR.I bit : Instruction caches 
> disabled
> @@ -163,14 +128,14 @@ ArmDisableInstructionCache
>    isb
>    bx      LR
>
> -ArmEnableSWPInstruction
> + RVCT_ASM_EXPORT ArmEnableSWPInstruction
>    mrc     p15, 0, r0, c1, c0, 0
>    orr     r0, r0, #0x00000400
>    mcr     p15, 0, r0, c1, c0, 0
>    isb
>    bx      LR
>
> -ArmEnableBranchPrediction
> + RVCT_ASM_EXPORT ArmEnableBranchPrediction
>    mrc     p15, 0, r0, c1, c0, 0 ; Read SCTLR into R0 (Read control register 
> configuration data)
>    orr     r0, r0, #0x00000800   ;
>    mcr     p15, 0, r0, c1, c0, 0 ; Write R0 into SCTLR (Write control 
> register configuration data)
> @@ -178,7 +143,7 @@ ArmEnableBranchPrediction
>    isb
>    bx      LR
>
> -ArmDisableBranchPrediction
> + RVCT_ASM_EXPORT ArmDisableBranchPrediction
>    mrc     p15, 0, r0, c1, c0, 0 ; Read SCTLR into R0 (Read control register 
> configuration data)
>    bic     r0, r0, #0x00000800   ;
>    mcr     p15, 0, r0, c1, c0, 0 ; Write R0 into SCTLR (Write control 
> register configuration data)
> @@ -186,21 +151,21 @@ ArmDisableBranchPrediction
>    isb
>    bx      LR
>
> -ArmSetLowVectors
> + RVCT_ASM_EXPORT ArmSetLowVectors
>    mrc     p15, 0, r0, c1, c0, 0 ; Read SCTLR into R0 (Read control register 
> configuration data)
>    bic     r0, r0, #0x00002000   ; clear V bit
>    mcr     p15, 0, r0, c1, c0, 0 ; Write R0 into SCTLR (Write control 
> register configuration data)
>    isb
>    bx      LR
>
> -ArmSetHighVectors
> + RVCT_ASM_EXPORT ArmSetHighVectors
>    mrc     p15, 0, r0, c1, c0, 0 ; Read SCTLR into R0 (Read control register 
> configuration data)
>    orr     r0, r0, #0x00002000   ; Set V bit
>    mcr     p15, 0, r0, c1, c0, 0 ; Write R0 into SCTLR (Write control 
> register configuration data)
>    isb
>    bx      LR
>
> -ArmV7AllDataCachesOperation
> + RVCT_ASM_EXPORT ArmV7AllDataCachesOperation
>    stmfd SP!,{r4-r12, LR}
>    mov   R1, R0                ; Save Function call in R1
>    mrc   p15, 1, R6, c0, c0, 1 ; Read CLIDR
> @@ -249,24 +214,24 @@ Finished
>    ldmfd SP!, {r4-r12, lr}
>    bx    LR
>
> -ArmDataMemoryBarrier
> + RVCT_ASM_EXPORT ArmDataMemoryBarrier
>    dmb
>    bx      LR
>
> -ArmDataSynchronizationBarrier
> + RVCT_ASM_EXPORT ArmDataSynchronizationBarrier
>    dsb
>    bx      LR
>
> -ArmInstructionSynchronizationBarrier
> + RVCT_ASM_EXPORT ArmInstructionSynchronizationBarrier
>    isb
>    bx      LR
>
> -ArmReadVBar
> + RVCT_ASM_EXPORT ArmReadVBar
>    // Set the Address of the Vector Table in the VBAR register
>    mrc     p15, 0, r0, c12, c0, 0
>    bx      lr
>
> -ArmWriteVBar
> + RVCT_ASM_EXPORT ArmWriteVBar
>    // Set the Address of the Vector Table in the VBAR register
>    mcr     p15, 0, r0, c12, c0, 0
>    // Ensure the SCTLR.V bit is clear
> @@ -276,7 +241,7 @@ ArmWriteVBar
>    isb
>    bx      lr
>
> -ArmEnableVFP
> + RVCT_ASM_EXPORT ArmEnableVFP
>    // Read CPACR (Coprocessor Access Control Register)
>    mrc     p15, 0, r0, c1, c0, 2
>    // Enable VPF access (Full Access to CP10, CP11) (V* instructions)
> @@ -289,37 +254,37 @@ ArmEnableVFP
>    mcr     p10,#0x7,r0,c8,c0,#0
>    bx      lr
>
> -ArmCallWFI
> + RVCT_ASM_EXPORT ArmCallWFI
>    wfi
>    bx      lr
>
>  //Note: Return 0 in Uniprocessor implementation
> -ArmReadCbar
> + RVCT_ASM_EXPORT ArmReadCbar
>    mrc     p15, 4, r0, c15, c0, 0  //Read Configuration Base Address Register
>    bx      lr
>
> -ArmReadMpidr
> + RVCT_ASM_EXPORT ArmReadMpidr
>    mrc     p15, 0, r0, c0, c0, 5     ; read MPIDR
>    bx      lr
>
> -ArmReadTpidrurw
> + RVCT_ASM_EXPORT ArmReadTpidrurw
>    mrc     p15, 0, r0, c13, c0, 2    ; read TPIDRURW
>    bx      lr
>
> -ArmWriteTpidrurw
> + RVCT_ASM_EXPORT ArmWriteTpidrurw
>    mcr     p15, 0, r0, c13, c0, 2   ; write TPIDRURW
>    bx      lr
>
> -ArmIsArchTimerImplemented
> + RVCT_ASM_EXPORT ArmIsArchTimerImplemented
>    mrc    p15, 0, r0, c0, c1, 1     ; Read ID_PFR1
>    and    r0, r0, #0x000F0000
>    bx     lr
>
> -ArmReadIdPfr1
> + RVCT_ASM_EXPORT ArmReadIdPfr1
>    mrc    p15, 0, r0, c0, c1, 1     ; Read ID_PFR1 Register
>    bx     lr
>
> -ArmReadIdMmfr0
> + RVCT_ASM_EXPORT ArmReadIdMmfr0
>    mrc    p15, 0, r0, c0, c1, 4     ; Read ID_MMFR0 Register
>    bx     lr
>
> diff --git a/ArmPkg/Library/ArmLib/Common/Arm/ArmLibSupport.asm 
> b/ArmPkg/Library/ArmLib/Common/Arm/ArmLibSupport.asm
> index 0974d46..bdd862a 100644
> --- a/ArmPkg/Library/ArmLib/Common/Arm/ArmLibSupport.asm
> +++ b/ArmPkg/Library/ArmLib/Common/Arm/ArmLibSupport.asm
> @@ -17,62 +17,36 @@
>
>      INCLUDE AsmMacroIoLib.inc
>
> -    EXPORT ArmReadMidr
> -    EXPORT ArmCacheInfo
> -    EXPORT ArmGetInterruptState
> -    EXPORT ArmGetFiqState
> -    EXPORT ArmGetTTBR0BaseAddress
> -    EXPORT ArmSetTTBR0
> -    EXPORT ArmSetDomainAccessControl
> -    EXPORT CPSRMaskInsert
> -    EXPORT CPSRRead
> -    EXPORT ArmReadCpacr
> -    EXPORT ArmWriteCpacr
> -    EXPORT ArmWriteAuxCr
> -    EXPORT ArmReadAuxCr
> -    EXPORT ArmInvalidateTlb
> -    EXPORT ArmUpdateTranslationTableEntry
> -    EXPORT ArmReadScr
> -    EXPORT ArmWriteScr
> -    EXPORT ArmReadMVBar
> -    EXPORT ArmWriteMVBar
> -    EXPORT ArmReadHVBar
> -    EXPORT ArmWriteHVBar
> -    EXPORT ArmCallWFE
> -    EXPORT ArmCallSEV
> -    EXPORT ArmReadSctlr
> -    EXPORT ArmReadCpuActlr
> -    EXPORT ArmWriteCpuActlr
> -
> -    AREA ArmLibSupport, CODE, READONLY
> -
> -ArmReadMidr
> +
> +    INCLUDE AsmMacroExport.inc
> +
> + RVCT_ASM_EXPORT ArmReadMidr
>    mrc     p15,0,R0,c0,c0,0
>    bx      LR
>
> -ArmCacheInfo
> + RVCT_ASM_EXPORT ArmCacheInfo
>    mrc     p15,0,R0,c0,c0,1
>    bx      LR
>
> -ArmGetInterruptState
> + RVCT_ASM_EXPORT ArmGetInterruptState
>    mrs     R0,CPSR
>    tst     R0,#0x80      // Check if IRQ is enabled.
>    moveq   R0,#1
>    movne   R0,#0
>    bx      LR
>
> -ArmGetFiqState
> + RVCT_ASM_EXPORT ArmGetFiqState
>    mrs     R0,CPSR
>    tst     R0,#0x40      // Check if FIQ is enabled.
>    moveq   R0,#1
>    movne   R0,#0
>    bx      LR
>
> -ArmSetDomainAccessControl
> + RVCT_ASM_EXPORT ArmSetDomainAccessControl
>    mcr     p15,0,r0,c3,c0,0
>    bx      lr
>
> -CPSRMaskInsert    // on entry, r0 is the mask and r1 is the field to insert
> + RVCT_ASM_EXPORT CPSRMaskInsert
>    stmfd   sp!, {r4-r12, lr} // save all the banked registers
>    mov     r3, sp            // copy the stack pointer into a non-banked 
> register
>    mrs     r2, cpsr          // read the cpsr
> @@ -85,33 +59,33 @@ CPSRMaskInsert    // on entry, r0 is the mask and r1 is 
> the field to insert
>    ldmfd   sp!, {r4-r12, lr} // restore registers
>    bx      lr                // return (hopefully thumb-safe!)             // 
> return (hopefully thumb-safe!)
>
> -CPSRRead
> + RVCT_ASM_EXPORT CPSRRead
>    mrs     r0, cpsr
>    bx      lr
>
> -ArmReadCpacr
> + RVCT_ASM_EXPORT ArmReadCpacr
>    mrc     p15, 0, r0, c1, c0, 2
>    bx      lr
>
> -ArmWriteCpacr
> + RVCT_ASM_EXPORT ArmWriteCpacr
>    mcr     p15, 0, r0, c1, c0, 2
>    isb
>    bx      lr
>
> -ArmWriteAuxCr
> + RVCT_ASM_EXPORT ArmWriteAuxCr
>    mcr     p15, 0, r0, c1, c0, 1
>    bx      lr
>
> -ArmReadAuxCr
> + RVCT_ASM_EXPORT ArmReadAuxCr
>    mrc     p15, 0, r0, c1, c0, 1
>    bx      lr
>
> -ArmSetTTBR0
> + RVCT_ASM_EXPORT ArmSetTTBR0
>    mcr     p15,0,r0,c2,c0,0
>    isb
>    bx      lr
>
> -ArmGetTTBR0BaseAddress
> + RVCT_ASM_EXPORT ArmGetTTBR0BaseAddress
>    mrc     p15,0,r0,c2,c0,0
>    LoadConstantToReg(0xFFFFC000, r1)
>    and     r0, r0, r1
> @@ -124,7 +98,7 @@ ArmGetTTBR0BaseAddress
>  //  IN VOID  *TranslationTableEntry  // R0
>  //  IN VOID  *MVA                    // R1
>  //  );
> -ArmUpdateTranslationTableEntry
> + RVCT_ASM_EXPORT ArmUpdateTranslationTableEntry
>    mcr     p15,0,R0,c7,c14,1     // DCCIMVAC Clean data cache by MVA
>    dsb
>    mcr     p15,0,R1,c8,c7,1      // TLBIMVA TLB Invalidate MVA
> @@ -133,7 +107,7 @@ ArmUpdateTranslationTableEntry
>    isb
>    bx      lr
>
> -ArmInvalidateTlb
> + RVCT_ASM_EXPORT ArmInvalidateTlb
>    mov     r0,#0
>    mcr     p15,0,r0,c8,c7,0
>    mcr     p15,0,R9,c7,c5,6      // BPIALL Invalidate Branch predictor array. 
> R9 == NoOp
> @@ -141,48 +115,48 @@ ArmInvalidateTlb
>    isb
>    bx      lr
>
> -ArmReadScr
> + RVCT_ASM_EXPORT ArmReadScr
>    mrc     p15, 0, r0, c1, c1, 0
>    bx      lr
>
> -ArmWriteScr
> + RVCT_ASM_EXPORT ArmWriteScr
>    mcr     p15, 0, r0, c1, c1, 0
>    bx      lr
>
> -ArmReadHVBar
> + RVCT_ASM_EXPORT ArmReadHVBar
>    mrc     p15, 4, r0, c12, c0, 0
>    bx      lr
>
> -ArmWriteHVBar
> + RVCT_ASM_EXPORT ArmWriteHVBar
>    mcr     p15, 4, r0, c12, c0, 0
>    bx      lr
>
> -ArmReadMVBar
> + RVCT_ASM_EXPORT ArmReadMVBar
>    mrc     p15, 0, r0, c12, c0, 1
>    bx      lr
>
> -ArmWriteMVBar
> + RVCT_ASM_EXPORT ArmWriteMVBar
>    mcr     p15, 0, r0, c12, c0, 1
>    bx      lr
>
> -ArmCallWFE
> + RVCT_ASM_EXPORT ArmCallWFE
>    wfe
>    bx      lr
>
> -ArmCallSEV
> + RVCT_ASM_EXPORT ArmCallSEV
>    sev
>    bx      lr
>
> -ArmReadSctlr
> + RVCT_ASM_EXPORT ArmReadSctlr
>    mrc     p15, 0, r0, c1, c0, 0      // Read SCTLR into R0 (Read control 
> register configuration data)
>    bx      lr
>
>
> -ArmReadCpuActlr
> + RVCT_ASM_EXPORT ArmReadCpuActlr
>    mrc     p15, 0, r0, c1, c0, 1
>    bx      lr
>
> -ArmWriteCpuActlr
> + RVCT_ASM_EXPORT ArmWriteCpuActlr
>    mcr     p15, 0, r0, c1, c0, 1
>    dsb
>    isb
> diff --git a/ArmPkg/Library/ArmSmcLib/Arm/ArmSmc.asm 
> b/ArmPkg/Library/ArmSmcLib/Arm/ArmSmc.asm
> index 50580f7..b82cf39 100644
> --- a/ArmPkg/Library/ArmSmcLib/Arm/ArmSmc.asm
> +++ b/ArmPkg/Library/ArmSmcLib/Arm/ArmSmc.asm
> @@ -11,11 +11,10 @@
>  //
>  //
>
> -    EXPORT ArmCallSmc
>
> -    AREA   ArmSmc, CODE, READONLY
> +    INCLUDE AsmMacroExport.inc
>
> -ArmCallSmc
> + RVCT_ASM_EXPORT ArmCallSmc
>      push    {r4-r8}
>      // r0 will be popped just after the SMC call
>      push     {r0}
> diff --git a/ArmPkg/Library/ArmSmcLibNull/Arm/ArmSmcNull.asm 
> b/ArmPkg/Library/ArmSmcLibNull/Arm/ArmSmcNull.asm
> index 3d3f554..3dcb25f 100644
> --- a/ArmPkg/Library/ArmSmcLibNull/Arm/ArmSmcNull.asm
> +++ b/ArmPkg/Library/ArmSmcLibNull/Arm/ArmSmcNull.asm
> @@ -11,11 +11,10 @@
>  //
>  //
>
> -    EXPORT ArmCallSmc
>
> -    AREA   ArmSmc, CODE, READONLY
> +    INCLUDE AsmMacroExport.inc
>
> -ArmCallSmc
> + RVCT_ASM_EXPORT ArmCallSmc
>    bx     lr
>
>    END
> diff --git a/ArmPkg/Library/BaseMemoryLibStm/Arm/CopyMem.asm 
> b/ArmPkg/Library/BaseMemoryLibStm/Arm/CopyMem.asm
> index 0d22d75..686253e 100755
> --- a/ArmPkg/Library/BaseMemoryLibStm/Arm/CopyMem.asm
> +++ b/ArmPkg/Library/BaseMemoryLibStm/Arm/CopyMem.asm
> @@ -37,11 +37,10 @@ InternalMemCopyMem (
>    IN      UINTN                     Length
>    )
>  **/
> -  EXPORT InternalMemCopyMem
>
> -  AREA AsmMemStuff, CODE, READONLY
> +    INCLUDE AsmMacroExport.inc
>
> -InternalMemCopyMem
> + RVCT_ASM_EXPORT InternalMemCopyMem
>    stmfd  sp!, {r4-r11, lr}
>    // Save the input parameters in extra registers (r11 = destination, r14 = 
> source, r12 = length)
>    mov  r11, r0
> diff --git a/ArmPkg/Library/BaseMemoryLibStm/Arm/SetMem.asm 
> b/ArmPkg/Library/BaseMemoryLibStm/Arm/SetMem.asm
> index a9f29e2..1d5191f 100755
> --- a/ArmPkg/Library/BaseMemoryLibStm/Arm/SetMem.asm
> +++ b/ArmPkg/Library/BaseMemoryLibStm/Arm/SetMem.asm
> @@ -34,11 +34,10 @@ InternalMemSetMem (
>    )
>  **/
>
> -  EXPORT InternalMemSetMem
>
> -  AREA AsmMemStuff, CODE, READONLY
> +    INCLUDE AsmMacroExport.inc
>
> -InternalMemSetMem
> + RVCT_ASM_EXPORT InternalMemSetMem
>    stmfd  sp!, {r4-r11, lr}
>    tst    r0, #3
>    movne  r3, #0
> diff --git a/ArmPkg/Library/BaseMemoryLibStm/BaseMemoryLibStm.inf 
> b/ArmPkg/Library/BaseMemoryLibStm/BaseMemoryLibStm.inf
> index c2f3e2f..eac6cef 100755
> --- a/ArmPkg/Library/BaseMemoryLibStm/BaseMemoryLibStm.inf
> +++ b/ArmPkg/Library/BaseMemoryLibStm/BaseMemoryLibStm.inf
> @@ -61,6 +61,7 @@
>
>  [Packages]
>    MdePkg/MdePkg.dec
> +  ArmPkg/ArmPkg.dec
>
>  [LibraryClasses]
>    DebugLib
> diff --git a/ArmPkg/Library/BaseMemoryLibVstm/Arm/CopyMem.asm 
> b/ArmPkg/Library/BaseMemoryLibVstm/Arm/CopyMem.asm
> index 17b79e5..5afd1e5 100755
> --- a/ArmPkg/Library/BaseMemoryLibVstm/Arm/CopyMem.asm
> +++ b/ArmPkg/Library/BaseMemoryLibVstm/Arm/CopyMem.asm
> @@ -37,11 +37,10 @@ InternalMemCopyMem (
>    IN      UINTN                     Length
>    )
>  **/
> -  EXPORT InternalMemCopyMem
>
> -  AREA AsmMemStuff, CODE, READONLY
> +    INCLUDE AsmMacroExport.inc
>
> -InternalMemCopyMem
> + RVCT_ASM_EXPORT InternalMemCopyMem
>    stmfd  sp!, {r4, r9, lr}
>    tst  r0, #3
>    mov  r4, r0
> diff --git a/ArmPkg/Library/BaseMemoryLibVstm/Arm/SetMem.asm 
> b/ArmPkg/Library/BaseMemoryLibVstm/Arm/SetMem.asm
> index 5226192..c4a7c2b 100755
> --- a/ArmPkg/Library/BaseMemoryLibVstm/Arm/SetMem.asm
> +++ b/ArmPkg/Library/BaseMemoryLibVstm/Arm/SetMem.asm
> @@ -34,11 +34,10 @@ InternalMemSetMem (
>    )
>  **/
>
> -  EXPORT InternalMemSetMem
>
> -  AREA AsmMemStuff, CODE, READONLY
> +    INCLUDE AsmMacroExport.inc
>
> -InternalMemSetMem
> + RVCT_ASM_EXPORT InternalMemSetMem
>    stmfd  sp!, {lr}
>    tst    r0, #3
>    movne  r3, #0
> diff --git a/ArmPkg/Library/BaseMemoryLibVstm/BaseMemoryLibVstm.inf 
> b/ArmPkg/Library/BaseMemoryLibVstm/BaseMemoryLibVstm.inf
> index eaff180..4c388fa 100755
> --- a/ArmPkg/Library/BaseMemoryLibVstm/BaseMemoryLibVstm.inf
> +++ b/ArmPkg/Library/BaseMemoryLibVstm/BaseMemoryLibVstm.inf
> @@ -62,6 +62,7 @@
>
>  [Packages]
>    MdePkg/MdePkg.dec
> +  ArmPkg/ArmPkg.dec
>
>  [LibraryClasses]
>    DebugLib
> diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/lasr.asm 
> b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/lasr.asm
> index feb267a..35723ff 100644
> --- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/lasr.asm
> +++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/lasr.asm
> @@ -13,9 +13,8 @@
>  
> //------------------------------------------------------------------------------
>
>
> -    EXPORT  __aeabi_lasr
>
> -    AREA    Math, CODE, READONLY
> +    INCLUDE AsmMacroExport.inc
>
>  ;
>  ;UINT32
> @@ -25,7 +24,7 @@
>  ;  IN UINT32  Divisor
>  ;  );
>  ;
> -__aeabi_lasr
> + RVCT_ASM_EXPORT __aeabi_lasr
>      SUBS     r3,r2,#0x20
>      BPL      {pc} + 0x18  ; 0x1c
>      RSB      r3,r2,#0x20
> diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/ldivmod.asm 
> b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/ldivmod.asm
> index 9c14e89..c71bd59 100644
> --- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/ldivmod.asm
> +++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/ldivmod.asm
> @@ -13,10 +13,9 @@
>  
> //------------------------------------------------------------------------------
>
>
> -    EXPORT  __aeabi_ldivmod
>      EXTERN  __aeabi_uldivmod
>
> -    AREA    Math, CODE, READONLY
> +    INCLUDE AsmMacroExport.inc
>
>  ;
>  ;UINT32
> @@ -27,7 +26,7 @@
>  ;  );
>  ;
>
> -__aeabi_ldivmod
> + RVCT_ASM_EXPORT __aeabi_ldivmod
>      PUSH     {r4,lr}
>      ASRS     r4,r1,#1
>      EOR      r4,r4,r3,LSR #1
> diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/llsl.asm 
> b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/llsl.asm
> index f6fc208..a31e186 100644
> --- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/llsl.asm
> +++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/llsl.asm
> @@ -13,9 +13,8 @@
>  
> //------------------------------------------------------------------------------
>
>
> -    EXPORT  __aeabi_llsl
>
> -    AREA    Math, CODE, READONLY
> +    INCLUDE AsmMacroExport.inc
>
>  ;
>  ;VOID
> @@ -27,7 +26,7 @@
>  ; );
>  ;
>
> -__aeabi_llsl
> + RVCT_ASM_EXPORT __aeabi_llsl
>      SUBS     r3,r2,#0x20
>      BPL      {pc} + 0x18  ; 0x1c
>      RSB      r3,r2,#0x20
> diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/llsr.asm 
> b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/llsr.asm
> index 829c871..881db10 100644
> --- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/llsr.asm
> +++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/llsr.asm
> @@ -13,9 +13,8 @@
>  
> //------------------------------------------------------------------------------
>
>
> -    EXPORT  __aeabi_llsr
>
> -    AREA    Math, CODE, READONLY
> +    INCLUDE AsmMacroExport.inc
>
>  ;
>  ;VOID
> @@ -26,7 +25,7 @@
>  ; IN  UINT32  Size
>  ; );
>  ;
> -__aeabi_llsr
> + RVCT_ASM_EXPORT __aeabi_llsr
>      SUBS     r3,r2,#0x20
>      BPL      {pc} + 0x18  ; 0x1c
>      RSB      r3,r2,#0x20
> diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/memcpy.asm 
> b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/memcpy.asm
> index 60556b1..ae91197 100644
> --- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/memcpy.asm
> +++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/memcpy.asm
> @@ -13,9 +13,8 @@
>  
> //------------------------------------------------------------------------------
>
>
> -    EXPORT  __aeabi_memcpy
>
> -    AREA    Memcpy, CODE, READONLY
> +    INCLUDE AsmMacroExport.inc
>
>  ;
>  ;VOID
> @@ -26,7 +25,7 @@
>  ; IN  UINT32  Size
>  ; );
>  ;
> -__aeabi_memcpy
> + RVCT_ASM_EXPORT __aeabi_memcpy
>    cmp     r2, #0
>    bxeq    lr
>    push    {lr}
> diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/memcpy4.asm 
> b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/memcpy4.asm
> index ecaa86f..3465e89 100644
> --- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/memcpy4.asm
> +++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/memcpy4.asm
> @@ -13,9 +13,8 @@
>  
> //------------------------------------------------------------------------------
>
>
> -    EXPORT  __aeabi_memcpy4
>
> -    AREA    Memcpy4, CODE, READONLY
> +    INCLUDE AsmMacroExport.inc
>
>  ;
>  ;VOID
> @@ -26,7 +25,7 @@
>  ; IN  UINT32  Size
>  ; );
>  ;
> -__aeabi_memcpy4
> + RVCT_ASM_EXPORT __aeabi_memcpy4
>      stmdb   sp!, {r4, lr}
>      subs    r2, r2, #32     ; 0x20
>      bcc     memcpy4_label2
> diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/memmove.asm 
> b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/memmove.asm
> index 2147e29..09773b0 100755
> --- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/memmove.asm
> +++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/memmove.asm
> @@ -13,9 +13,8 @@
>  
> //------------------------------------------------------------------------------
>
>
> -    EXPORT  __aeabi_memmove
>
> -    AREA    Memmove, CODE, READONLY
> +    INCLUDE AsmMacroExport.inc
>
>  ;
>  ;VOID
> @@ -26,7 +25,7 @@
>  ; IN  UINT32        Size
>  ; );
>  ;
> -__aeabi_memmove
> + RVCT_ASM_EXPORT __aeabi_memmove
>    CMP     r2, #0
>    BXEQ    lr
>    CMP     r0, r1
> diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/switch.asm 
> b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/switch.asm
> index e09c90c..f23aa42 100644
> --- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/switch.asm
> +++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/switch.asm
> @@ -14,11 +14,10 @@
>
>
>
> -    EXPORT  __ARM_switch8
>
> -    AREA  ArmSwitch, CODE, READONLY
> +    INCLUDE AsmMacroExport.inc
>
> -__ARM_switch8
> + RVCT_ASM_EXPORT __ARM_switch8
>    LDRB    r12,[lr,#-1]
>    CMP      r3,r12
>    LDRBCC  r3,[lr,r3]
> diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/uldiv.asm 
> b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/uldiv.asm
> index aed649b..6b6184e 100644
> --- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/uldiv.asm
> +++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/uldiv.asm
> @@ -14,9 +14,8 @@
>
>
>
> -    EXPORT  __aeabi_uldivmod
>
> -    AREA  Uldivmod, CODE, READONLY
> +    INCLUDE AsmMacroExport.inc
>
>  ;
>  ;UINT64
> @@ -26,7 +25,7 @@
>  ;  IN  UINT64   Divisor
>  ;  )
>  ;
> -__aeabi_uldivmod
> + RVCT_ASM_EXPORT __aeabi_uldivmod
>    stmdb   sp!, {r4, r5, r6, lr}
>    mov     r4, r1
>    mov     r5, r0
> diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/uread.asm 
> b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/uread.asm
> index 3d58965..f369e4d 100644
> --- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/uread.asm
> +++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/uread.asm
> @@ -14,10 +14,8 @@
>
>
>
> -    EXPORT  __aeabi_uread4
> -    EXPORT  __aeabi_uread8
>
> -    AREA  Uread4, CODE, READONLY
> +    INCLUDE AsmMacroExport.inc
>
>  ;
>  ;UINT32
> @@ -26,7 +24,7 @@
>  ;  IN VOID   *Pointer
>  ;  );
>  ;
> -__aeabi_uread4
> + RVCT_ASM_EXPORT __aeabi_uread4
>      ldrb    r1, [r0]
>      ldrb    r2, [r0, #1]
>      ldrb    r3, [r0, #2]
> @@ -43,7 +41,7 @@ __aeabi_uread4
>  ;  IN VOID   *Pointer
>  ;  );
>  ;
> -__aeabi_uread8
> + RVCT_ASM_EXPORT __aeabi_uread8
>      mov     r3, r0
>
>      ldrb    r1, [r3]
> diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/uwrite.asm 
> b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/uwrite.asm
> index 85e1ba8..434a652 100644
> --- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/uwrite.asm
> +++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/uwrite.asm
> @@ -13,10 +13,8 @@
>  
> //------------------------------------------------------------------------------
>
>
> -    EXPORT  __aeabi_uwrite4
> -    EXPORT  __aeabi_uwrite8
>
> -    AREA  Uwrite4, CODE, READONLY
> +    INCLUDE AsmMacroExport.inc
>
>  ;
>  ;UINT32
> @@ -27,7 +25,7 @@
>  ;  );
>  ;
>  ;
> -__aeabi_uwrite4
> + RVCT_ASM_EXPORT __aeabi_uwrite4
>      mov     r2, r0, lsr #8
>      strb    r0, [r1]
>      strb    r2, [r1, #1]
> @@ -46,7 +44,7 @@ __aeabi_uwrite4
>  ;  );
>  ;
>  ;
> -__aeabi_uwrite8
> + RVCT_ASM_EXPORT __aeabi_uwrite8
>      mov     r3, r0, lsr #8
>      strb    r0, [r2]
>      strb    r3, [r2, #1]
> diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf 
> b/ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf
> index 3487787..103f515 100644
> --- a/ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf
> +++ b/ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf
> @@ -102,6 +102,7 @@
>
>  [Packages]
>    MdePkg/MdePkg.dec
> +  ArmPkg/ArmPkg.dec
>
>  [LibraryClasses]
>
> --
> 1.9.5.msysgit.0
>
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to