On Mon, Mar 13, 2023 at 18:16:45 +0100, Ard Biesheuvel wrote: > In preparation for introducing an implementation of the EFI memory > attributes protocol that is shared between ARM and AArch64, unify the > existing code that converts a page table descriptor into a > EFI_MEMORY_xxx bitfield, so it can be called from the generic code.
Two bits of nitpicking: 1) You use _xxx from here and _xx in the comments below. > > Signed-off-by: Ard Biesheuvel <a...@kernel.org> > --- > ArmPkg/Drivers/CpuDxe/AArch64/Mmu.c | 17 +++++++++ > ArmPkg/Drivers/CpuDxe/Arm/Mmu.c | 38 ++++++++++++++++++++ > ArmPkg/Drivers/CpuDxe/CpuDxe.h | 14 ++++++++ > 3 files changed, 69 insertions(+) > > diff --git a/ArmPkg/Drivers/CpuDxe/AArch64/Mmu.c > b/ArmPkg/Drivers/CpuDxe/AArch64/Mmu.c > index 8bda11f08a30..4a416743fb8a 100644 > --- a/ArmPkg/Drivers/CpuDxe/AArch64/Mmu.c > +++ b/ArmPkg/Drivers/CpuDxe/AArch64/Mmu.c > @@ -83,6 +83,23 @@ PageAttributeToGcdAttribute ( > return GcdAttributes; > } > > +/** > + Convert a arch specific set of page attributes into a mask "an arch" (and again x2 below) Reviewed-by: Leif Lindholm <quic_llind...@quicinc.com> > + of EFI_MEMORY_xx constants. > + > + @param PageAttributes The set of page attributes. > + > + @retval The mask of EFI_MEMORY_xx constants. > + > +**/ > +UINT64 > +RegionAttributeToGcdAttribute ( > + IN UINTN PageAttributes > + ) > +{ > + return PageAttributeToGcdAttribute (PageAttributes); > +} > + > STATIC > UINT64 > GetFirstPageAttribute ( > diff --git a/ArmPkg/Drivers/CpuDxe/Arm/Mmu.c b/ArmPkg/Drivers/CpuDxe/Arm/Mmu.c > index 07faab8216ec..8e0dd5d2aaca 100644 > --- a/ArmPkg/Drivers/CpuDxe/Arm/Mmu.c > +++ b/ArmPkg/Drivers/CpuDxe/Arm/Mmu.c > @@ -13,6 +13,15 @@ SPDX-License-Identifier: BSD-2-Clause-Patent > #include <Library/MemoryAllocationLib.h> > #include "CpuDxe.h" > > +/** > + Convert a set of ARM short descriptor section attributes into a mask > + of EFI_MEMORY_xx constants. > + > + @param SectionAttributes The set of page attributes. > + @param GcdAttributes Pointer to the return value. > + > +**/ > +STATIC > EFI_STATUS > SectionToGcdAttributes ( > IN UINT32 SectionAttributes, > @@ -74,6 +83,35 @@ SectionToGcdAttributes ( > return EFI_SUCCESS; > } > > +/** > + Convert a arch specific set of page attributes into a mask > + of EFI_MEMORY_xx constants. > + > + @param PageAttributes The set of page attributes. > + > + @retval The mask of EFI_MEMORY_xx constants. > + > +**/ > +UINT64 > +RegionAttributeToGcdAttribute ( > + IN UINTN PageAttributes > + ) > +{ > + UINT64 Result; > + > + SectionToGcdAttributes (PageAttributes, &Result); > + return Result; > +} > + > +/** > + Convert a set of ARM short descriptor page attributes into a mask > + of EFI_MEMORY_xx constants. > + > + @param PageAttributes The set of page attributes. > + @param GcdAttributes Pointer to the return value. > + > +**/ > +STATIC > EFI_STATUS > PageToGcdAttributes ( > IN UINT32 PageAttributes, > diff --git a/ArmPkg/Drivers/CpuDxe/CpuDxe.h b/ArmPkg/Drivers/CpuDxe/CpuDxe.h > index ff672390ce51..8cb105dcc841 100644 > --- a/ArmPkg/Drivers/CpuDxe/CpuDxe.h > +++ b/ArmPkg/Drivers/CpuDxe/CpuDxe.h > @@ -126,4 +126,18 @@ SetGcdMemorySpaceAttributes ( > IN UINT64 Attributes > ); > > +/** > + Convert a arch specific set of page attributes into a mask > + of EFI_MEMORY_xx constants. > + > + @param PageAttributes The set of page attributes. > + > + @retval The mask of EFI_MEMORY_xx constants. > + > +**/ > +UINT64 > +RegionAttributeToGcdAttribute ( > + IN UINTN PageAttributes > + ); > + > #endif // CPU_DXE_H_ > -- > 2.39.2 > > > > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#101241): https://edk2.groups.io/g/devel/message/101241 Mute This Topic: https://groups.io/mt/97585996/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/leave/9847357/21656/1706620634/xyzzy [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-