The MMU routines are only used by a small subset of the users of ArmLib.
In order to prevent all those users to have to run the library constructor
to clean some MMU handling routines to the PoC, split off all MMU handling
into a separate ArmMmuLib.

NOTE: this change will affect out-of-tree platforms, which will need to add the
      ArmMmuLib library class resolution to their .DSC descriptions.

Changes since v1:
- updated ArmVirtQemuKernel as well as ArmVirtQemu and ArmVirtXen to switch to
  the new ArmMmuLib (#3)
- added tags from Laszlo and Star (#3)
- dropped ArmLib reference from DxeIp l(#3) [*]
- clarified comment (#4)

[*] I have taken the liberty to keep Star's R-b on patch #3 since the change to
    MdeModulePkg is minimal and only affects ARM/AARCH64

Ard Biesheuvel (4):
  ArmPkg: introduce ArmMmuLib library class
  ArmPkg: introduce base ArmMmuLib implementation
  ArmPkg ArmVirtPkg MdeModulePkg: switch to separate ArmMmuLib
  ArmPkg/ArmMmuLib: add PEI specific version of ArmMmuLib

 ArmPkg/ArmPkg.dec                                                              
   |  1 +
 ArmPkg/Drivers/CpuDxe/CpuDxe.inf                                               
   |  1 +
 ArmPkg/Include/Library/ArmLib.h                                                
   | 38 ----------
 ArmPkg/Include/Library/ArmMmuLib.h                                             
   | 65 +++++++++++++++++
 ArmPkg/Library/ArmLib/AArch64/AArch64BaseLibConstructor.c                      
   | 36 ----------
 ArmPkg/Library/ArmLib/AArch64/AArch64Lib.inf                                   
   |  3 -
 ArmPkg/Library/ArmLib/AArch64/AArch64LibPrePi.inf                              
   |  1 -
 ArmPkg/Library/ArmLib/ArmV7/ArmLibSupportV7.S                                  
   |  6 --
 ArmPkg/Library/ArmLib/ArmV7/ArmLibSupportV7.asm                                
   |  6 --
 ArmPkg/Library/ArmLib/ArmV7/ArmV7Lib.h                                         
   | 12 ----
 ArmPkg/Library/ArmLib/ArmV7/ArmV7Lib.inf                                       
   |  1 -
 ArmPkg/Library/ArmLib/ArmV7/ArmV7LibPrePi.inf                                  
   |  1 -
 ArmPkg/Library/ArmLib/ArmV7/ArmV7Support.S                                     
   |  5 --
 ArmPkg/Library/ArmLib/ArmV7/ArmV7Support.asm                                   
   |  4 --
 ArmPkg/Library/{ArmLib/AArch64/AArch64Mmu.c => 
ArmMmuLib/AArch64/ArmMmuLibCore.c} | 25 +++++--
 ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibReplaceEntry.S                       
   | 76 ++++++++++++++++++++
 ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuPeiLibConstructor.c                     
   | 61 ++++++++++++++++
 ArmPkg/Library/{ArmLib/ArmV7/ArmV7Mmu.c => ArmMmuLib/Arm/ArmMmuLibCore.c}      
   | 38 +++++++++-
 ArmPkg/Library/ArmMmuLib/Arm/ArmMmuLibV7Support.S                              
   | 35 +++++++++
 ArmPkg/Library/ArmMmuLib/Arm/ArmMmuLibV7Support.asm                            
   | 32 +++++++++
 ArmPkg/Library/ArmMmuLib/ArmMmuBaseLib.inf                                     
   | 43 +++++++++++
 ArmPkg/Library/ArmMmuLib/ArmMmuPeiLib.inf                                      
   | 36 ++++++++++
 ArmVirtPkg/ArmVirtQemu.dsc                                                     
   |  2 +
 ArmVirtPkg/ArmVirtQemuKernel.dsc                                               
   |  2 +
 ArmVirtPkg/ArmVirtXen.dsc                                                      
   |  2 +
 ArmVirtPkg/Library/ArmVirtMemoryInitPeiLib/ArmVirtMemoryInitPeiLib.c           
   |  1 +
 ArmVirtPkg/Library/ArmVirtMemoryInitPeiLib/ArmVirtMemoryInitPeiLib.inf         
   |  1 +
 MdeModulePkg/Core/DxeIplPeim/Arm/DxeLoadFunc.c                                 
   |  2 +-
 MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf                                        
   |  2 +-
 29 files changed, 417 insertions(+), 121 deletions(-)
 create mode 100644 ArmPkg/Include/Library/ArmMmuLib.h
 delete mode 100644 ArmPkg/Library/ArmLib/AArch64/AArch64BaseLibConstructor.c
 rename ArmPkg/Library/{ArmLib/AArch64/AArch64Mmu.c => 
ArmMmuLib/AArch64/ArmMmuLibCore.c} (94%)
 create mode 100644 ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibReplaceEntry.S
 create mode 100644 ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuPeiLibConstructor.c
 rename ArmPkg/Library/{ArmLib/ArmV7/ArmV7Mmu.c => 
ArmMmuLib/Arm/ArmMmuLibCore.c} (93%)
 create mode 100644 ArmPkg/Library/ArmMmuLib/Arm/ArmMmuLibV7Support.S
 create mode 100644 ArmPkg/Library/ArmMmuLib/Arm/ArmMmuLibV7Support.asm
 create mode 100644 ArmPkg/Library/ArmMmuLib/ArmMmuBaseLib.inf
 create mode 100644 ArmPkg/Library/ArmMmuLib/ArmMmuPeiLib.inf

-- 
2.7.4

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to