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