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

