Ard,

I just ran into this as well yesterday - I agree that the solution here is to 
back out the changes from the ExceptionSupport assembly or even the entire 
CpuDxe driver.  The benefit here is for libraries containing unrelated 
functions and this case is neither a library (it's a driver) nor unrelated 
functions (the exception handling is all used together).

The reason these files got hit was because my script was aggressively finding 
assembly in ArmPkg.  Although I reviewed the changes I didn't spot this one in 
time.

Eugene

> -----Original Message-----
> From: Ard Biesheuvel [mailto:[email protected]]
> Sent: Wednesday, December 02, 2015 9:42 AM
> To: Cohen, Eugene <[email protected]>
> Cc: [email protected]
> Subject: Re: [edk2] [PATCH 3/3] ArmPkg: update RVCT assembly functions to
> use new RVCT_ASM_EXPORT macro
> 
> On 25 November 2015 at 20:11, Cohen, Eugene <[email protected]> wrote:
> > This has the effect of splitting assembly functions into their own sections 
> > so
> the linker can remove unused ones to save space.
> >
> > This has been tested to build with ArmPkg.dsc with RVCT 4.
> >
> > The majority of the conversion was performed with the attached python
> script.
> >
> > Contributed-under: TianoCore Contribution Agreement 1.0
> > Signed-off-by: Eugene Cohen <[email protected]>
> 
> This patch breaks ArmVirtQemu-ARM for me:
> 
> ASSERT /home/ard/build/uefi-
> next/ArmPkg/Drivers/CpuDxe/ArmV6/Exception.c(214): 0
> 
> This is because you are removing the ALIGN=5 from the area .asm file that
> contains the vector table, presumably this one:
> ArmPkg/Drivers/CpuDxe/ArmV6/ExceptionSupport.asm
> 
> I also wonder if it makes sense in the first place to split the vector table 
> into
> discardable sections, so perhaps we should just drop those hunks?
> 
> 
> 
> 
> > ---
> >  .../ArmCpuLib/ArmCortexA9Lib/ArmCortexA9Helper.asm |   5 +-
> >  ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.asm       |  26 ++---
> >  ArmPkg/Drivers/CpuDxe/ArmV4/ExceptionSupport.asm   |  14 +--
> >  ArmPkg/Drivers/CpuDxe/ArmV6/ExceptionSupport.asm   |  14 +--
> >  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/div.asm   |  14 +--
> >  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/memset.asm   |  11 +--
> >  ArmPkg/Library/CompilerIntrinsicsLib/Arm/mullu.asm |   8 +-
> >  .../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 +
> >  32 files changed, 178 insertions(+), 316 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/Drivers/CpuDxe/ArmV4/ExceptionSupport.asm
> > b/ArmPkg/Drivers/CpuDxe/ArmV4/ExceptionSupport.asm
> > index 9f09a0b..c086993 100644
> > --- a/ArmPkg/Drivers/CpuDxe/ArmV4/ExceptionSupport.asm
> > +++ b/ArmPkg/Drivers/CpuDxe/ArmV4/ExceptionSupport.asm
> > @@ -12,16 +12,12 @@
> >  //
> >
> > //--------------------------------------------------------------------
> > ----------
> >
> > -  EXPORT  ExceptionHandlersStart
> > -  EXPORT  ExceptionHandlersEnd
> > -  EXPORT  CommonExceptionEntry
> > -  EXPORT  AsmCommonExceptionEntry
> > +  INCLUDE AsmMacroExport.inc
> >    IMPORT  CommonCExceptionHandler
> >
> >    PRESERVE8
> > -  AREA  DxeExceptionHandlers, CODE, READONLY
> >
> > -ExceptionHandlersStart
> > + RVCT_ASM_EXPORT ExceptionHandlersStart
> >
> >  Reset
> >    b   ResetEntry
> > @@ -99,12 +95,12 @@ FiqEntry
> >    ldr       R1,CommonExceptionEntry
> >    bx        R1
> >
> > -CommonExceptionEntry
> > + RVCT_ASM_EXPORT CommonExceptionEntry
> >    dcd       0x12345678
> >
> > -ExceptionHandlersEnd
> > + RVCT_ASM_EXPORT ExceptionHandlersEnd
> >
> > -AsmCommonExceptionEntry
> > + RVCT_ASM_EXPORT AsmCommonExceptionEntry
> >    mrc       p15, 0, r1, c6, c0, 2   ; Read IFAR
> >    stmfd     SP!,{R1}                ; Store the IFAR
> >
> > diff --git a/ArmPkg/Drivers/CpuDxe/ArmV6/ExceptionSupport.asm
> > b/ArmPkg/Drivers/CpuDxe/ArmV6/ExceptionSupport.asm
> > index b28ff9f..293e0a0 100644
> > --- a/ArmPkg/Drivers/CpuDxe/ArmV6/ExceptionSupport.asm
> > +++ b/ArmPkg/Drivers/CpuDxe/ArmV6/ExceptionSupport.asm
> > @@ -53,20 +53,16 @@ This is the stack constructed by the exception
> handler (low address to high addr
> >   */
> >
> >
> > -  EXPORT  ExceptionHandlersStart
> > -  EXPORT  ExceptionHandlersEnd
> > -  EXPORT  CommonExceptionEntry
> > -  EXPORT  AsmCommonExceptionEntry
> > +  INCLUDE AsmMacroExport.inc
> >    IMPORT  CommonCExceptionHandler
> >
> >    PRESERVE8
> > -  AREA  DxeExceptionHandlers, CODE, READONLY, CODEALIGN, ALIGN=5
> >
> >  //
> >  // This code gets copied to the ARM vector table  //
> > ExceptionHandlersStart - ExceptionHandlersEnd gets copied  //
> > -ExceptionHandlersStart
> > + RVCT_ASM_EXPORT ExceptionHandlersStart
> >
> >  Reset
> >    b   ResetEntry
> > @@ -189,16 +185,16 @@ FiqEntry
> >  //
> >  // This gets patched by the C code that patches in the vector table
> > // -CommonExceptionEntry
> > + RVCT_ASM_EXPORT CommonExceptionEntry
> >    dcd       AsmCommonExceptionEntry
> >
> > -ExceptionHandlersEnd
> > + RVCT_ASM_EXPORT ExceptionHandlersEnd
> >
> >  //
> >  // This code runs from CpuDxe driver loaded address. It is patched
> > into  // CommonExceptionEntry.
> >  //
> > -AsmCommonExceptionEntry
> > + RVCT_ASM_EXPORT AsmCommonExceptionEntry
> >    mrc       p15, 0, R1, c6, c0, 2   ; Read IFAR
> >    str       R1, [SP, #0x50]         ; Store it in 
> > EFI_SYSTEM_CONTEXT_ARM.IFAR
> >
> > 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/div.asm
> > b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/div.asm
> > index b539e51..1855a47 100644
> > --- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/div.asm
> > +++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/div.asm
> > @@ -13,12 +13,8 @@
> >
> > //--------------------------------------------------------------------
> > ----------
> >
> >
> > -    EXPORT  __aeabi_uidiv
> > -    EXPORT  __aeabi_uidivmod
> > -    EXPORT  __aeabi_idiv
> > -    EXPORT  __aeabi_idivmod
> >
> > -    AREA  Math, CODE, READONLY
> > +    INCLUDE AsmMacroExport.inc
> >
> >  ;
> >  ;UINT32
> > @@ -29,8 +25,8 @@
> >  ;  );
> >  ;
> >
> > -__aeabi_uidiv
> > -__aeabi_uidivmod
> > + RVCT_ASM_EXPORT __aeabi_uidiv
> > + RVCT_ASM_EXPORT __aeabi_uidivmod
> >      RSBS    r12, r1, r0, LSR #4
> >      MOV     r2, #0
> >      BCC     __arm_div4
> > @@ -47,8 +43,8 @@ __aeabi_uidivmod
> >  ;  IN INT32  Divisor
> >  ;  );
> >  ;
> > -__aeabi_idiv
> > -__aeabi_idivmod
> > + RVCT_ASM_EXPORT __aeabi_idiv
> > + RVCT_ASM_EXPORT __aeabi_idivmod
> >      ORRS    r12, r0, r1
> >      BMI     __arm_div_negative
> >      RSBS    r12, r1, r0, LSR #1
> > 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/memset.asm
> > b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/memset.asm
> > index bae3c1f..0e67fad 100755
> > --- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/memset.asm
> > +++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/memset.asm
> > @@ -14,16 +14,13 @@
> >
> > //--------------------------------------------------------------------
> > ----------
> >
> >
> > -    EXPORT  __aeabi_memset
> > -    EXPORT  __aeabi_memclr
> > -    EXPORT  __aeabi_memclr4
> >
> > -    AREA    Memset, CODE, READONLY
> > +    INCLUDE AsmMacroExport.inc
> >
> >  ; void __aeabi_memclr4(void *dest, size_t n);  ; void
> > __aeabi_memclr(void *dest, size_t n); -__aeabi_memclr
> > -__aeabi_memclr4
> > + RVCT_ASM_EXPORT __aeabi_memclr
> > + RVCT_ASM_EXPORT __aeabi_memclr4
> >    mov   r2, #0
> >
> >  ;
> > @@ -35,7 +32,7 @@ __aeabi_memclr4
> >  ; IN  UINT32  Character
> >  ; );
> >  ;
> > -__aeabi_memset
> > + RVCT_ASM_EXPORT __aeabi_memset
> >    cmp  r1, #0
> >    bxeq lr
> >    ; args = 0, pretend = 0, frame = 0
> > diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/mullu.asm
> > b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/mullu.asm
> > index 3451c2c..d9979d0 100644
> > --- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/mullu.asm
> > +++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/mullu.asm
> > @@ -13,10 +13,8 @@
> >
> > //--------------------------------------------------------------------
> > ----------
> >
> >
> > -  EXPORT  __ARM_ll_mullu
> > -  EXPORT  __aeabi_lmul
> >
> > -  AREA  Math, CODE, READONLY
> > +    INCLUDE AsmMacroExport.inc
> >
> >  ;
> >  ;INT64
> > @@ -26,7 +24,7 @@
> >  ;  IN INT32   Multiplier
> >  ;  );
> >  ;
> > -__ARM_ll_mullu
> > + RVCT_ASM_EXPORT __ARM_ll_mullu
> >    mov     r3, #0
> >  // Make upper part of INT64 Multiplier 0 and use __aeabi_lmul
> >
> > @@ -38,7 +36,7 @@ __ARM_ll_mullu
> >  ;  IN INT64   Multiplier
> >  ;  );
> >  ;
> > -__aeabi_lmul
> > + RVCT_ASM_EXPORT __aeabi_lmul
> >    stmdb   sp!, {lr}
> >    mov     lr, r0
> >    umull   r0, ip, r2, lr
> > 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
> > [email protected]
> > https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to