The attached python script was discarded by the mail server so here it is in plaintext for anyone interested.
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Eugene Cohen <[email protected]> ## @file # asmfix.py: Process RVCT ASM files to replace exported functions with a # macro that includes AREA directives to enable code size reduction. # # Copyright (c) 2015 HP Development Company, L.P. # This program and the accompanying materials # are licensed and made available under the terms and conditions of the BSD License # which accompanies this distribution. The full text of the license may be found at # http://opensource.org/licenses/bsd-license.php # # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # import re import os import sys import glob gAreaPattern=re.compile('\s+AREA\s+(\w+)') gExportPattern=re.compile('\s+EXPORT\s+(\w+)') gLabelPattern=re.compile('^\w+') def ProcessFiles(files): print "processing files: %s" % files for file in files: ProcessFile(file) return def ProcessFile(fname): outfname = fname + '.new' RemoveIfExist(outfname) infile = open(fname, 'r') outfile = open(outfname, 'w') ExportList=[] FirstAreaFound=False for line in infile: #print ("checking %s" % line) if(not FirstAreaFound): m = gAreaPattern.search(line) if(m): #print "matched AREA" FirstAreaFound=True outfile.write (" INCLUDE AsmMacroExport.inc\n") continue m = gExportPattern.search(line) if(m): #print "matched EXPORT" #print "group 0 is %s" % m.group(0) #print "group 1 is %s" % m.group(1) ExportList.append(m.group(1)) continue m = gLabelPattern.search(line) if(m): #print "matched label" #print "group 0 is %s" % m.group(0) label=m.group(0) if ( label in ExportList ): #print "found exported label" outfile.write (" RVCT_ASM_EXPORT %s\n" % label) continue outfile.write(line) outfile.close(); infile.close() oldname = fname + '.bak' RemoveIfExist(oldname) os.rename(fname, oldname) os.rename(outfname, fname) os.remove(oldname) return def RemoveIfExist(fname): try: os.remove(fname) except: pass return if __name__ == "__main__": #print "call with args: %s" % sys.argv[1] #files = glob.glob(sys.argv[1]) #print "files is %s" % files #ProcessFiles(files) ProcessFiles(sys.argv[1:]) -----Original Message----- From: edk2-devel [mailto:[email protected]] On Behalf Of Cohen, Eugene Sent: Wednesday, November 25, 2015 12:11 PM To: [email protected] Subject: [edk2] [PATCH 3/3] ArmPkg: update RVCT assembly functions to use new RVCT_ASM_EXPORT macro 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]> --- .../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

