On 11 August 2016 at 12:18, Leif Lindholm <[email protected]> wrote:
> Nice bit of cleanup, thanks!
>
> For the ones I haven't commented on already:
> Reviewed-by: Leif Lindholm <[email protected]>
>
> (And for the BeagleBoardPkg as well, unless Andrew objects.)
>

Committed as

2b47cdc9364f ArmLib: remove ArmReplaceLiveTranslationEntry() implementation
820d07abadf1 ArmPkg: add missing ArmMmuLib resolution to ArmPkg.dsc
874883a49d0e ArmPkg/AsmMacroIoLib: remove unused obsolete MMIO and
other asm macros
66edb631f8a2 ArmPlatformPkg RVCT: drop dependency on GCC macro library
d2d0e27c7668 ArmPkg: introduce ASM_FUNC, MOV32/MOV64 and ADRL/LDRL macros
16a9fe2ca9cc ArmVirt/PrePi: make jump to CEntryPoint relative
dfc2838892e4 ArmVirtPkg: clean up assembly source files
5e32710023e2 ArmPkg/ArmSmcLibNull: move to generic C implementation
136df8b8b2bb ArmPkg/ArmCpuLib: switch to ASM_FUNC() asm macro
f0883e35dea7 ArmPkg/ArmGicV3: switch to ASM_FUNC() asm macro
de656e666c61 ArmPkg/ArmHvcLib: switch to ASM_FUNC() asm macro
0efaa42f6e06 ArmPkg/ArmLib: switch to ASM_FUNC() asm macro
e4d37ada015f ArmPkg/ArmMmuLib: switch to ASM_FUNC() asm macro
86a4d91bda59 ArmPkg/ArmSmcLib: switch to ASM_FUNC() asm macro
8ca934aab50b ArmPkg/BaseMemoryLibSm: switch to ASM_FUNC() asm macro
7589d9dbcfbf ArmPkg/BaseMemoryLibVstm: switch to ASM_FUNC() asm macro
903e31242d01 ArmPkg/CompilerIntrinsicsLib: switch to ASM_FUNC() asm macro
22b080c78c7a ArmPkg/SemihostLib: switch to ASM_FUNC() asm macro
b8f76eaec25e BeagleBoardPkg: add missing ArmMmuLib resolution
a0f56915a02c ArmPlatformPkg/ArmJunoLib: switch to ASM_FUNC() asm macro
d2fa09a13487 ArmPlatformPkg/PrePi: switch to ASM_FUNC() asm macro
13dc7fa5a082 ArmPlatformPkg/PrePeiCore: switch to ASM_FUNC() asm macro
04209b53549b ArmPlatformPkg/ArmVExpressPkg: switch to ASM_FUNC() asm macro
c17ae4cf8e07 ArmPlatformPkg/ArmPlatformLibNull: switch to ASM_FUNC() asm macro
926059304e83 ArmPlatformPkg/ArmPlatformStackLib: switch to ASM_FUNC() asm macro

(with the comments addressed)

Thanks,
Ard.



> On Wed, Aug 10, 2016 at 05:17:36PM +0200, Ard Biesheuvel wrote:
>> As requested by Eugene, this series introduces a new ASM_FUNC preprocessor
>> macro that emits functions into separate sections, allowing the linker to
>> get rid of the code that ends up unused in the module.
>>
>> Note that using a native GNU as macro turned out to be problematic, due
>> to our use of Trim, and the fact that not all versions of GNU as honour
>> the -I option, making both #include (preprocessor) and .include (GNU as)
>> unusable to include files with shared macro definitions.
>>
>> Since we're making a clean spot, let's introduce some other utility macros
>> as well, and clean up the various assembler files to use it. In particular,
>> clean up various patterns involving LoadConstantToReg(), including the gem
>>
>>   LoadConstantToReg (_gPcd_FixedAtBuild_xxxx, rN)
>>   ldr  rN, [rN]
>>
>> which performs two memory reads, including one that is subject to runtime
>> relocation, to load a compile time constant into a register. Note that this
>> is the definition of LoadConstantReg() we use for Clang, even on AARCH64:
>>
>>   // load _Reg with _Data
>>   #define LoadConstantToReg(_Data, _Reg)    \
>>     ldr  _Reg, 1f                         ; \
>>     b    2f                               ; \
>>   .align(8)                               ; \
>>   1:                                        \
>>     .8byte (_Data)                        ; \
>>   2:
>>
>> Other changes involve constant folding, i.e.,
>>
>>      // Stack for the secondary core = Number of Cores - 1
>>   -  LoadConstantToReg (FixedPcdGet32(PcdCoreCount), x0)
>>   -  sub   x0, x0, #1
>>   -  LoadConstantToReg (FixedPcdGet32(PcdCPUCoreSecondaryStackSize), x1)
>>   -  mul   x1, x1, x0
>>   +  MOV32 (x1, (FixedPcdGet32(PcdCoreCount) - 1) * 
>> FixedPcdGet32(PcdCPUCoreSecondaryStackSize))
>>
>> and
>>
>>   -  LoadConstantToReg (FixedPcdGet64(PcdCPUCoresStackBase), r1)
>>   -  LoadConstantToReg (FixedPcdGet32(PcdCPUCorePrimaryStackSize), r2)
>>   -  add   r1, r1, r2
>>   +  MOV32 (r1, FixedPcdGet64(PcdCPUCoresStackBase) + 
>> FixedPcdGet32(PcdCPUCorePrimaryStackSize))
>>
>> (where r2 is dead after the add)
>>
>> Code can be found here
>> https://git.linaro.org/people/ard.biesheuvel/uefi-next.git/shortlog/refs/heads/arm-asm-cleanup2
>>
>> Ard Biesheuvel (26):
>>   ArmLib: remove ArmReplaceLiveTranslationEntry() implementation
>>   ArmPkg: add missing ArmMmuLib resolution to ArmPkg.dsc
>>   ArmPkg/AsmMacroIoLib: remove unused obsolete MMIO and other asm macros
>>   ArmPlatformPkg RVCT: drop dependency on GCC macro library
>>   ArmPkg: introduce ASM_FUNC, MOV32/MOV64 and ADRL/LDRL macros
>>   ArmVirt/PrePi: make jump to CEntryPoint relative
>>   ArmVirtPkg: clean up assembly source files
>>   ArmPkg/ArmSmcLibNull: move to generic C implementation
>>   ArmPkg/ArmCpuLib: switch to ASM_FUNC() asm macro
>>   ArmPkg/ArmGicV3: switch to ASM_FUNC() asm macro
>>   ArmPkg/ArmHvcLib: switch to ASM_FUNC() asm macro
>>   ArmPkg/ArmLib: switch to ASM_FUNC() asm macro
>>   ArmPkg/ArmMmuLib: switch to ASM_FUNC() asm macro
>>   ArmPkg/ArmSmcLib: switch to ASM_FUNC() asm macro
>>   ArmPkg/BaseMemoryLibSm: switch to ASM_FUNC() asm macro
>>   ArmPkg/BaseMemoryLibVstm: switch to ASM_FUNC() asm macro
>>   ArmPkg/CompilerIntrinsicsLib: switch to ASM_FUNC() asm macro
>>   ArmPkg/SemihostLib: switch to ASM_FUNC() asm macro
>>   BeagleBoardPkg: remove unused Sec.inf module
>>   BeagleBoardPkg: add missing ArmMmuLib resolution
>>   ArmPlatformPkg/ArmJunoLib: switch to ASM_FUNC() asm macro
>>   ArmPlatformPkg/PrePi: switch to ASM_FUNC() asm macro
>>   ArmPlatformPkg/PrePeiCore: switch to ASM_FUNC() asm macro
>>   ArmPlatformPkg/ArmVExpressPkg: switch to ASM_FUNC() asm macro
>>   ArmPlatformPkg/ArmPlatformLibNull: switch to ASM_FUNC() asm macro
>>   ArmPlatformPkg/ArmPlatformStackLib: switch to ASM_FUNC() asm macro
>>
>>  ArmPkg/ArmPkg.dsc                                                           
>>      |   4 +
>>  ArmPkg/Drivers/ArmCpuLib/ArmCortexA5xLib/AArch64/ArmCortexA5xHelper.S       
>>      |   9 +-
>>  ArmPkg/Drivers/ArmCpuLib/ArmCortexA9Lib/ArmCortexA9Helper.S                 
>>      |   9 +-
>>  ArmPkg/Drivers/ArmGic/GicV3/AArch64/ArmGicV3.S                              
>>      |  28 +-
>>  ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.S                                  
>>      |  28 +-
>>  ArmPkg/Include/AsmMacroIoLib.h                                              
>>      | 232 ++--------------
>>  ArmPkg/Include/AsmMacroIoLib.inc                                            
>>      |  54 ----
>>  ArmPkg/Include/AsmMacroIoLibV8.h                                            
>>      |  20 +-
>>  ArmPkg/Library/ArmHvcLib/AArch64/ArmHvc.S                                   
>>      |   9 +-
>>  ArmPkg/Library/ArmHvcLib/Arm/ArmHvc.S                                       
>>      |  10 +-
>>  ArmPkg/Library/ArmLib/AArch64/AArch64ArchTimerSupport.S                     
>>      |  67 ++---
>>  ArmPkg/Library/ArmLib/AArch64/AArch64Support.S                              
>>      | 181 +++----------
>>  ArmPkg/Library/ArmLib/AArch64/ArmLibSupportV8.S                             
>>      |  43 +--
>>  ArmPkg/Library/ArmLib/ArmV7/ArmLibSupportV7.S                               
>>      |  47 +---
>>  ArmPkg/Library/ArmLib/ArmV7/ArmV7ArchTimerSupport.S                         
>>      |  67 ++---
>>  ArmPkg/Library/ArmLib/ArmV7/ArmV7Support.S                                  
>>      | 113 +++-----
>>  ArmPkg/Library/ArmLib/Common/AArch64/ArmLibSupport.S                        
>>      |  78 ++----
>>  ArmPkg/Library/ArmLib/Common/Arm/ArmLibSupport.S                            
>>      |  89 ++----
>>  ArmPkg/Library/ArmLib/Common/Arm/ArmLibSupport.asm                          
>>      |   4 +-
>>  ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibReplaceEntry.S                    
>>      |   4 +-
>>  ArmPkg/Library/ArmSmcLib/AArch64/ArmSmc.S                                   
>>      |   7 +-
>>  ArmPkg/Library/ArmSmcLib/Arm/ArmSmc.S                                       
>>      |   8 +-
>>  ArmPkg/Library/ArmSmcLibNull/Arm/ArmSmcNull.S                               
>>      |  20 --
>>  ArmPkg/Library/ArmSmcLibNull/Arm/ArmSmcNull.asm                             
>>      |  20 --
>>  ArmPkg/Library/ArmSmcLibNull/{AArch64/ArmSmcNull.S => ArmSmcLibNull.c}      
>>      |  42 +--
>>  ArmPkg/Library/ArmSmcLibNull/ArmSmcLibNull.inf                              
>>      |   8 +-
>>  ArmPkg/Library/BaseMemoryLibStm/Arm/CopyMem.S                               
>>      |   8 +-
>>  ArmPkg/Library/BaseMemoryLibStm/Arm/SetMem.S                                
>>      |   7 +-
>>  ArmPkg/Library/BaseMemoryLibVstm/Arm/CopyMem.S                              
>>      |   8 +-
>>  ArmPkg/Library/BaseMemoryLibVstm/Arm/SetMem.S                               
>>      |   9 +-
>>  ArmPkg/Library/CompilerIntrinsicsLib/AArch64/memcpy.S                       
>>      |  10 +-
>>  ArmPkg/Library/CompilerIntrinsicsLib/Arm/ashldi3.S                          
>>      |   6 +-
>>  ArmPkg/Library/CompilerIntrinsicsLib/Arm/ashrdi3.S                          
>>      |   6 +-
>>  ArmPkg/Library/CompilerIntrinsicsLib/Arm/clzsi2.S                           
>>      |   6 +-
>>  ArmPkg/Library/CompilerIntrinsicsLib/Arm/ctzsi2.S                           
>>      |   6 +-
>>  ArmPkg/Library/CompilerIntrinsicsLib/Arm/div.S                              
>>      |  13 +-
>>  ArmPkg/Library/CompilerIntrinsicsLib/Arm/divdi3.S                           
>>      |   6 +-
>>  ArmPkg/Library/CompilerIntrinsicsLib/Arm/divsi3.S                           
>>      |   6 +-
>>  ArmPkg/Library/CompilerIntrinsicsLib/Arm/ldivmod.S                          
>>      |   7 +-
>>  ArmPkg/Library/CompilerIntrinsicsLib/Arm/llsl.S                             
>>      |   7 +-
>>  ArmPkg/Library/CompilerIntrinsicsLib/Arm/llsr.S                             
>>      |   8 +-
>>  ArmPkg/Library/CompilerIntrinsicsLib/Arm/lshrdi3.S                          
>>      |   6 +-
>>  ArmPkg/Library/CompilerIntrinsicsLib/Arm/memmove.S                          
>>      |   6 +-
>>  ArmPkg/Library/CompilerIntrinsicsLib/Arm/moddi3.S                           
>>      |   6 +-
>>  ArmPkg/Library/CompilerIntrinsicsLib/Arm/modsi3.S                           
>>      |   6 +-
>>  ArmPkg/Library/CompilerIntrinsicsLib/Arm/muldi3.S                           
>>      |   6 +-
>>  ArmPkg/Library/CompilerIntrinsicsLib/Arm/switch16.S                         
>>      |   8 +-
>>  ArmPkg/Library/CompilerIntrinsicsLib/Arm/switch32.S                         
>>      |   8 +-
>>  ArmPkg/Library/CompilerIntrinsicsLib/Arm/switch8.S                          
>>      |   8 +-
>>  ArmPkg/Library/CompilerIntrinsicsLib/Arm/switchu8.S                         
>>      |   9 +-
>>  ArmPkg/Library/CompilerIntrinsicsLib/Arm/ucmpdi2.S                          
>>      |   6 +-
>>  ArmPkg/Library/CompilerIntrinsicsLib/Arm/udivdi3.S                          
>>      |   6 +-
>>  ArmPkg/Library/CompilerIntrinsicsLib/Arm/udivmoddi4.S                       
>>      |   7 +-
>>  ArmPkg/Library/CompilerIntrinsicsLib/Arm/udivsi3.S                          
>>      |   7 +-
>>  ArmPkg/Library/CompilerIntrinsicsLib/Arm/umoddi3.S                          
>>      |   6 +-
>>  ArmPkg/Library/CompilerIntrinsicsLib/Arm/umodsi3.S                          
>>      |   6 +-
>>  ArmPkg/Library/SemihostLib/AArch64/GccSemihost.S                            
>>      |   7 +-
>>  ArmPkg/Library/SemihostLib/Arm/GccSemihost.S                                
>>      |   8 +-
>>  ArmPlatformPkg/ArmJunoPkg/Library/ArmJunoLib/AArch64/ArmJunoHelper.S        
>>      |  37 +--
>>  ArmPlatformPkg/ArmJunoPkg/Library/ArmJunoLib/Arm/ArmJunoHelper.S            
>>      |  36 +--
>>  
>> ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA15-A7/CTA15-A7Helper.S
>>     |  22 +-
>>  
>> ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA15-A7/CTA15-A7Helper.asm
>>   |   7 +-
>>  ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA9x4/CTA9x4Helper.S   
>>      |  28 +-
>>  ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA9x4/CTA9x4Helper.asm 
>>      |   8 +-
>>  
>> ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/AArch64/RTSMHelper.S
>>     |  38 +--
>>  ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/Arm/RTSMHelper.S   
>>      |  41 +--
>>  ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/Arm/RTSMHelper.asm 
>>      |  12 +-
>>  ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressSecLibCTA9x4/CTA9x4Boot.S  
>>      |  23 +-
>>  
>> ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressSecLibCTA9x4/CTA9x4Boot.asm 
>>     |   5 +-
>>  ArmPlatformPkg/Library/ArmPlatformLibNull/AArch64/ArmPlatformHelper.S       
>>      |  28 +-
>>  ArmPlatformPkg/Library/ArmPlatformLibNull/Arm/ArmPlatformHelper.S           
>>      |  28 +-
>>  ArmPlatformPkg/Library/ArmPlatformLibNull/Arm/ArmPlatformHelper.asm         
>>      |  10 +-
>>  ArmPlatformPkg/Library/ArmPlatformStackLib/AArch64/ArmPlatformStackLib.S    
>>      |  35 +--
>>  ArmPlatformPkg/Library/ArmPlatformStackLib/Arm/ArmPlatformStackLib.S        
>>      |  25 +-
>>  ArmPlatformPkg/Library/ArmPlatformStackLib/Arm/ArmPlatformStackLib.asm      
>>      |   4 +-
>>  ArmPlatformPkg/PrePeiCore/AArch64/Helper.S                                  
>>      |  11 +-
>>  ArmPlatformPkg/PrePeiCore/AArch64/PrePeiCoreEntryPoint.S                    
>>      |  30 +--
>>  ArmPlatformPkg/PrePeiCore/AArch64/SwitchStack.S                             
>>      |   9 +-
>>  ArmPlatformPkg/PrePeiCore/Arm/Exception.asm                                 
>>      |   2 -
>>  ArmPlatformPkg/PrePeiCore/Arm/PrePeiCoreEntryPoint.S                        
>>      |  30 +--
>>  ArmPlatformPkg/PrePeiCore/Arm/PrePeiCoreEntryPoint.asm                      
>>      |  14 +-
>>  ArmPlatformPkg/PrePeiCore/Arm/SwitchStack.S                                 
>>      |   9 +-
>>  ArmPlatformPkg/PrePi/AArch64/ModuleEntryPoint.S                             
>>      |  49 ++--
>>  ArmPlatformPkg/PrePi/Arm/ModuleEntryPoint.S                                 
>>      |  50 +---
>>  ArmPlatformPkg/PrePi/Arm/ModuleEntryPoint.asm                               
>>      |  27 +-
>>  
>> ArmVirtPkg/Library/ArmQemuRelocatablePlatformLib/AARCH64/RelocatableVirtHelper.S
>>  |  36 +--
>>  
>> ArmVirtPkg/Library/ArmQemuRelocatablePlatformLib/ARM/RelocatableVirtHelper.S 
>>     |  50 ++--
>>  ArmVirtPkg/Library/ArmVirtPlatformLib/AARCH64/VirtHelper.S                  
>>      |  30 +--
>>  ArmVirtPkg/Library/ArmVirtPlatformLib/ARM/VirtHelper.S                      
>>      |  31 +--
>>  ArmVirtPkg/Library/ArmVirtPlatformLib/ARM/VirtHelper.asm                    
>>      |  10 +-
>>  
>> ArmVirtPkg/Library/ArmXenRelocatablePlatformLib/AARCH64/RelocatableVirtHelper.S
>>   |  36 +--
>>  ArmVirtPkg/Library/ArmXenRelocatablePlatformLib/ARM/RelocatableVirtHelper.S 
>>      |  47 ++--
>>  ArmVirtPkg/PrePi/AArch64/ModuleEntryPoint.S                                 
>>      |  48 +---
>>  ArmVirtPkg/PrePi/Arm/ModuleEntryPoint.S                                     
>>      |  73 ++---
>>  BeagleBoardPkg/BeagleBoardPkg.dsc                                           
>>      |   1 +
>>  BeagleBoardPkg/Sec/Arm/ModuleEntryPoint.S                                   
>>      |  85 ------
>>  BeagleBoardPkg/Sec/Arm/ModuleEntryPoint.asm                                 
>>      |  89 ------
>>  BeagleBoardPkg/Sec/Cache.c                                                  
>>      |  79 ------
>>  BeagleBoardPkg/Sec/Clock.c                                                  
>>      |  70 -----
>>  BeagleBoardPkg/Sec/LzmaDecompress.h                                         
>>      | 103 -------
>>  BeagleBoardPkg/Sec/PadConfiguration.c                                       
>>      | 282 --------------------
>>  BeagleBoardPkg/Sec/Sec.c                                                    
>>      | 186 -------------
>>  BeagleBoardPkg/Sec/Sec.inf                                                  
>>      |  73 -----
>>  103 files changed, 647 insertions(+), 2730 deletions(-)
>>  delete mode 100644 ArmPkg/Library/ArmSmcLibNull/Arm/ArmSmcNull.S
>>  delete mode 100644 ArmPkg/Library/ArmSmcLibNull/Arm/ArmSmcNull.asm
>>  rename ArmPkg/Library/ArmSmcLibNull/{AArch64/ArmSmcNull.S => 
>> ArmSmcLibNull.c} (73%)
>>  delete mode 100644 BeagleBoardPkg/Sec/Arm/ModuleEntryPoint.S
>>  delete mode 100644 BeagleBoardPkg/Sec/Arm/ModuleEntryPoint.asm
>>  delete mode 100644 BeagleBoardPkg/Sec/Cache.c
>>  delete mode 100644 BeagleBoardPkg/Sec/Clock.c
>>  delete mode 100644 BeagleBoardPkg/Sec/LzmaDecompress.h
>>  delete mode 100644 BeagleBoardPkg/Sec/PadConfiguration.c
>>  delete mode 100644 BeagleBoardPkg/Sec/Sec.c
>>  delete mode 100644 BeagleBoardPkg/Sec/Sec.inf
>>
>> --
>> 2.7.4
>>
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to