Hi Jiewen,

On Sun, Jun 07, 2020 at 01:17:11AM +0000, Yao, Jiewen wrote:
> Hi Ilias
> It seems a good idea to support relocatable StMM.
> 
> Thought on StandaloneMmPkg/Core/StandaloneMmCoreRelocatable.inf
> Usually we do not add special link option in INF and build a module to be ELF 
> for some special purposes.
> Things might be broken if X86 platform uses this INF to build Relocatable 
> image with visual studio or with GCC.

Great I've mostly seen the Arm related pieces of the relevant EDK2 parts, so the
X86 help is appreciated!

> 
> Do you think if it is possible to still create a self-relocatable 
> StandaloneMmCore as a PE image, instead of ELF ?
> One example is at : 
> https://github.com/jyao1/STM/blob/master/Stm/StmPkg/Core/Init/StmInit.c#L1096

I don't know, but that sounds like a good idea. I'll have a look and let you 
know.

> Then we may reuse the generic PeCoff library in C code before any global 
> variable access.
> No special assembly code or link script required. And no need to add a PCD.

The PCD is there (apart from the asm usage), because the BaseAddress defined in 
the .fdf is 
included in the PE/COFF header.
The StMM library [1] parts that parse that header and use the BaseAddress also 
need a fixup.
Maybe with your suggestion that goes away as well?

[1] 
https://github.com/tianocore/edk2/blob/master/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/StandaloneMmCoreEntryPoint.c#L266

Thanks for the pointers!
/Ilias
> 
> Thank you
> Yao Jiewen
> 
> 
> > -----Original Message-----
> > From: Ilias Apalodimas <ilias.apalodi...@linaro.org>
> > Sent: Saturday, June 6, 2020 4:52 PM
> > To: ard.biesheu...@arm.com; sami.muja...@arm.com; Yao, Jiewen
> > <jiewen....@intel.com>; supreeth.venkat...@arm.com
> > Cc: devel@edk2.groups.io; Ilias Apalodimas <ilias.apalodi...@linaro.org>
> > Subject: [RFC edk2 v1] StandaloneMmPkg: Relocatable version for
> > StandAloneMM
> > 
> > With work currently being done in OP-TEE [1] and U-boot [2], we can
> > compile StandAloneMM as a single binary [3] and load it from OP-TEE in
> > an isolated partition that behahes similarly to SPM.
> > By doing so we reuse existing code from EDK2 for the UEFI variable
> > storage regardless of the firmware implementation. Another advantage is
> > that OP-TEE combined with U-Boot's OP-TEE supplicant can use the RPMB
> > partition of an eMMC and securely store EFI variables instead of solely
> > relying on a secure world flash [4].
> > 
> > Since StMM can be compiled as a binary that runs on OP-TEE, we need to
> > make it self-relocatable. OP-TEE load address can be arbitrary depending
> > on memory layout or ASLR.
> > We could keep the current StandAloneMM implementation as-is and duplicate
> > StandaloneMmCoreEntryPoint.c. Instead add two more .inf files for the
> > relocatable option and the relevant linker script, move the current
> > entry point into asm and add a FeaturePcd for enabling/disabling the
> > relocatable option.
> > 
> > [1] https://github.com/apalos/optee_os/tree/stmm_upstream_03_clean
> > [2] https://github.com/u-boot/u-
> > boot/blob/master/lib/efi_loader/efi_variable_tee.c
> > [3] https://git.linaro.org/people/ilias.apalodimas/edk2-
> > platforms.git/tree/Platform/QemuVirt/PlatformStandaloneMm.dsc?h=stmm_rel
> > oc_combined
> > [4] https://git.linaro.org/people/ilias.apalodimas/edk2-
> > platforms.git/tree/Silicon/QemuVirt/Drivers/OpTeeRpmbFv/OpTeeRpmbFv.c?h=
> > stmm_reloc_combined
> > 
> > Signed-off-by: Ilias Apalodimas <ilias.apalodi...@linaro.org>
> > ---
> >  StandaloneMmPkg/Core/Scripts/StMM-PIE.lds     |  54 +++++++++
> >  StandaloneMmPkg/Core/StandaloneMmCore.inf     |   3 +
> >  .../Core/StandaloneMmCoreRelocatable.inf      |  80 ++++++++++++++
> >  .../AArch64/ModuleEntryPoint.S                | 103 ++++++++++++++++++
> >  .../AArch64/StandaloneMmCoreEntryPoint.c      |   7 +-
> >  .../StandaloneMmCoreEntryPoint.inf            |   4 +
> >  .../StandaloneMmCoreEntryPointRelocatable.inf |  54 +++++++++
> >  StandaloneMmPkg/StandaloneMmPkg.dec           |   2 +
> >  8 files changed, 306 insertions(+), 1 deletion(-)
> >  create mode 100644 StandaloneMmPkg/Core/Scripts/StMM-PIE.lds
> >  create mode 100644
> > StandaloneMmPkg/Core/StandaloneMmCoreRelocatable.inf
> >  create mode 100644
> > StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/ModuleEntr
> > yPoint.S
> >  create mode 100644
> > StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCoreE
> > ntryPointRelocatable.inf
> > 
> > diff --git a/StandaloneMmPkg/Core/Scripts/StMM-PIE.lds
> > b/StandaloneMmPkg/Core/Scripts/StMM-PIE.lds
> > new file mode 100644
> > index 000000000000..a1d7012c4ca3
> > --- /dev/null
> > +++ b/StandaloneMmPkg/Core/Scripts/StMM-PIE.lds
> > @@ -0,0 +1,54 @@
> > +/** @file
> > 
> > +
> > 
> > +  Copyright (c) 2015, Linaro Ltd. All rights reserved.<BR>
> > 
> > +
> > 
> > +  SPDX-License-Identifier: BSD-2-Clause-Patent
> > 
> > +
> > 
> > +**/
> > 
> > +
> > 
> > +SECTIONS
> > 
> > +{
> > 
> > +  PROVIDE(__reloc_base = .);
> > 
> > +
> > 
> > +  . = PECOFF_HEADER_SIZE;
> > 
> > +  .text : ALIGN(CONSTANT(COMMONPAGESIZE)) {
> > 
> > +    *(.text.reloc*)
> > 
> > +    . = ALIGN(0x1000);
> > 
> > +    PROVIDE(__stmm_start = .);
> > 
> > +    *(.text .text*)
> > 
> > +    . = ALIGN(0x20);
> > 
> > +    PROVIDE(__reloc_start = .);
> > 
> > +    *(.rel .rel.*)
> > 
> > +    *(.rela .rela.*)
> > 
> > +    PROVIDE(__reloc_end = .);
> > 
> > +  }
> > 
> > +  PROVIDE(__ro_start = .);
> > 
> > +  .got : ALIGN(CONSTANT(COMMONPAGESIZE)) {
> > 
> > +    *(.got .got*)
> > 
> > +  }
> > 
> > +  .rodata : ALIGN(CONSTANT(COMMONPAGESIZE)) {
> > 
> > +    *(.rodata .rodata*)
> > 
> > +  }
> > 
> > +  PROVIDE(__ro_end = .);
> > 
> > +  .data : ALIGN(CONSTANT(COMMONPAGESIZE)) {
> > 
> > +    *(.data .data*)
> > 
> > +  }
> > 
> > +  .bss : ALIGN(CONSTANT(COMMONPAGESIZE)) {
> > 
> > +    *(.bss .bss*)
> > 
> > +  }
> > 
> > +  PROVIDE(__stmm_end = .);
> > 
> > +
> > 
> > +  .note (INFO) : { *(.note.gnu.build-id) }
> > 
> > +
> > 
> > +  /DISCARD/ : {
> > 
> > +    *(.note.GNU-stack)
> > 
> > +    *(.gnu.hash)
> > 
> > +    *(.gnu_debuglink)
> > 
> > +    *(.interp)
> > 
> > +    *(.dynamic)
> > 
> > +    *(.dynsym)
> > 
> > +    *(.dynstr)
> > 
> > +    *(.hash)
> > 
> > +    *(.comment)
> > 
> > +  }
> > 
> > +}
> > 
> > diff --git a/StandaloneMmPkg/Core/StandaloneMmCore.inf
> > b/StandaloneMmPkg/Core/StandaloneMmCore.inf
> > index 7d590b49bd3f..fdd4b61b3665 100644
> > --- a/StandaloneMmPkg/Core/StandaloneMmCore.inf
> > +++ b/StandaloneMmPkg/Core/StandaloneMmCore.inf
> > @@ -74,3 +74,6 @@
> >    gEfiEventLegacyBootGuid
> > 
> >    gEfiEventExitBootServicesGuid
> > 
> >    gEfiEventReadyToBootGuid
> > 
> > +
> > 
> > +[BuildOptions]
> > 
> > +  GCC:*_*_*_DLINK_FLAGS = -Wl,-T,$(MODULE_DIR)/Scripts/StMM-PIE.lds
> > 
> > diff --git a/StandaloneMmPkg/Core/StandaloneMmCoreRelocatable.inf
> > b/StandaloneMmPkg/Core/StandaloneMmCoreRelocatable.inf
> > new file mode 100644
> > index 000000000000..69049080ef78
> > --- /dev/null
> > +++ b/StandaloneMmPkg/Core/StandaloneMmCoreRelocatable.inf
> > @@ -0,0 +1,80 @@
> > +## @file
> > 
> > +# This module provide an SMM CIS compliant implementation of SMM Core.
> > 
> > +#
> > 
> > +# Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.<BR>
> > 
> > +# Copyright (c) 2016 - 2018, ARM Limited. All rights reserved.<BR>
> > 
> > +# Copyright (c) 2020, Linaro Limited. All rights reserved.<BR>
> > 
> > +#
> > 
> > +# SPDX-License-Identifier: BSD-2-Clause-Patent
> > 
> > +#
> > 
> > +##
> > 
> > +
> > 
> > +[Defines]
> > 
> > +  INF_VERSION                    = 0x0001001A
> > 
> > +  BASE_NAME                      = StandaloneMmCore
> > 
> > +  FILE_GUID                      = 6E14B6FD-3600-4DD6-A17A-206B3B6DCE16
> > 
> > +  MODULE_TYPE                    = MM_CORE_STANDALONE
> > 
> > +  VERSION_STRING                 = 1.0
> > 
> > +  PI_SPECIFICATION_VERSION       = 0x00010032
> > 
> > +  ENTRY_POINT                    = StandaloneMmMain
> > 
> > +
> > 
> > +#  VALID_ARCHITECTURES           = IA32 X64 AARCH64
> > 
> > +
> > 
> > +[Sources]
> > 
> > +  StandaloneMmCore.c
> > 
> > +  StandaloneMmCore.h
> > 
> > +  StandaloneMmCorePrivateData.h
> > 
> > +  Page.c
> > 
> > +  Pool.c
> > 
> > +  Handle.c
> > 
> > +  Locate.c
> > 
> > +  Notify.c
> > 
> > +  Dependency.c
> > 
> > +  Dispatcher.c
> > 
> > +  Mmi.c
> > 
> > +  InstallConfigurationTable.c
> > 
> > +  FwVol.c
> > 
> > +
> > 
> > +[Packages]
> > 
> > +  MdePkg/MdePkg.dec
> > 
> > +  MdeModulePkg/MdeModulePkg.dec
> > 
> > +  StandaloneMmPkg/StandaloneMmPkg.dec
> > 
> > +
> > 
> > +[LibraryClasses]
> > 
> > +  BaseLib
> > 
> > +  BaseMemoryLib
> > 
> > +  CacheMaintenanceLib
> > 
> > +  DebugLib
> > 
> > +  ExtractGuidedSectionLib
> > 
> > +  FvLib
> > 
> > +  HobLib
> > 
> > +  MemoryAllocationLib
> > 
> > +  MemLib
> > 
> > +  PeCoffLib
> > 
> > +  ReportStatusCodeLib
> > 
> > +  StandaloneMmCoreEntryPoint
> > 
> > +
> > 
> > +[Protocols]
> > 
> > +  gEfiDxeMmReadyToLockProtocolGuid             ## UNDEFINED #
> > SmiHandlerRegister
> > 
> > +  gEfiMmReadyToLockProtocolGuid                ## PRODUCES
> > 
> > +  gEfiMmEndOfDxeProtocolGuid                   ## PRODUCES
> > 
> > +  gEfiLoadedImageProtocolGuid                   ## PRODUCES
> > 
> > +  gEfiMmConfigurationProtocolGuid               ## CONSUMES
> > 
> > +
> > 
> > +[Guids]
> > 
> > +  gAprioriGuid                                  ## SOMETIMES_CONSUMES   ## 
> > File
> > 
> > +  gEfiEventDxeDispatchGuid                      ## PRODUCES             ## 
> > GUID #
> > SmiHandlerRegister
> > 
> > +  gEfiEndOfDxeEventGroupGuid                    ## PRODUCES             ## 
> > GUID #
> > SmiHandlerRegister
> > 
> > +  ## SOMETIMES_CONSUMES   ## GUID # Locate protocol
> > 
> > +  ## SOMETIMES_PRODUCES   ## GUID # SmiHandlerRegister
> > 
> > +  gEdkiiMemoryProfileGuid
> > 
> > +  gZeroGuid                                     ## SOMETIMES_CONSUMES   ## 
> > GUID
> > 
> > +  gEfiHobListGuid
> > 
> > +  gMmCoreDataHobGuid
> > 
> > +  gMmFvDispatchGuid
> > 
> > +  gEfiEventLegacyBootGuid
> > 
> > +  gEfiEventExitBootServicesGuid
> > 
> > +  gEfiEventReadyToBootGuid
> > 
> > +
> > 
> > +[BuildOptions]
> > 
> > +  GCC:*_*_*_DLINK_FLAGS = -Wl,-Bsymbolic,-pie,-
> > T,$(MODULE_DIR)/Scripts/StMM-PIE.lds
> > 
> > diff --git
> > a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/ModuleEn
> > tryPoint.S
> > b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/ModuleEn
> > tryPoint.S
> > new file mode 100644
> > index 000000000000..90ff4579daa6
> > --- /dev/null
> > +++
> > b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/ModuleEn
> > tryPoint.S
> > @@ -0,0 +1,103 @@
> > +//
> > 
> > +//  Copyright (c) 2011-2013, ARM Limited. All rights reserved.
> > 
> > +//  Copyright (c) 2015-2020, Linaro Limited. All rights reserved.
> > 
> > +//
> > 
> > +//  SPDX-License-Identifier: BSD-2-Clause-Patent
> > 
> > +//
> > 
> > +//
> > 
> > +
> > 
> > +#include <AsmMacroIoLibV8.h>
> > 
> > +ASM_FUNC(_ModuleEntryPoint)
> > 
> > +  adr   x8, FeaturePcdGet (PcdStMMReloc)
> > 
> > +  ldrb  w9, [x8]
> > 
> > +  cmp   x9, #0
> > 
> > +  // If PcdStMMReloc is set to TRUE, go ahead and fixup the relocations 
> > here
> > 
> > +  beq   .Llaunch
> > 
> > +  adr   x8, __reloc_base
> > 
> > +  adr   x9, __reloc_start
> > 
> > +  adr   x10, __reloc_end
> > 
> > +  bl    ASM_PFX(_DoReloc)
> > 
> > +.Llaunch:
> > 
> > +  b     ModuleEntryPoint
> > 
> > +
> > 
> > +.section .text.reloc, "ax"
> > 
> > +ASM_PFX(_DoReloc):
> > 
> > +  mov x20, x0
> > 
> > +  mov x21, x1
> > 
> > +  mov x22, x2
> > 
> > +  mov x23, x3
> > 
> > +
> > 
> > +  // Set all of the memory as r/w
> > 
> > +  adr x11, __stmm_start
> > 
> > +  adr x2, __stmm_end
> > 
> > +  ldr x0, =0xC4000065
> > 
> > +  and x1, x11, #~0x0fff      // Align to page
> > 
> > +  sub x2, x2, x11
> > 
> > +  add x2, x2, #0xfff
> > 
> > +  lsr x2, x2, #12            // nr pages
> > 
> > +  ldr x3, =0x5               // Set perms to r/w
> > 
> > +  svc #0
> > 
> > +  // Prevent speculative execution beyond svc instruction
> > 
> > +  dsb nsh
> > 
> > +  isb
> > 
> > +
> > 
> > +.Lreloc_loop:
> > 
> > +  cmp   x9, x10
> > 
> > +  bhs   .Lreloc_done
> > 
> > +  //
> > 
> > +  // We are built as a ET_DYN PIE executable, so we need to process all
> > 
> > +  // relative relocations regardless of whether or not we are executing 
> > from
> > 
> > +  // the same offset we were linked at. This is only possible if we are
> > 
> > +  // running from RAM.
> > 
> > +  //
> > 
> > +  // AArch64 uses the ELF64 RELA format, which means each entry in the
> > 
> > +  // relocation table consists of
> > 
> > +  //
> > 
> > +  //   UINT64 offset          : the relative offset of the value that 
> > needs to
> > 
> > +  //                            be relocated
> > 
> > +  //   UINT64 info            : relocation type and symbol index (the 
> > latter is
> > 
> > +  //                            not used for R_AARCH64_RELATIVE 
> > relocations)
> > 
> > +  //   UINT64 addend          : value to be added to the value being 
> > relocated
> > 
> > +  //
> > 
> > +  ldp   x11, x12, [x9], #24   // read offset into x11 and info into x12
> > 
> > +  cmp   x12, #0x403           // check info == R_AARCH64_RELATIVE?
> > 
> > +  bne   .Lreloc_loop          // not a relative relocation? then skip
> > 
> > +  ldr   x12, [x9, #-8]        // read addend into x12
> > 
> > +  add   x12, x12, x8          // add reloc base to addend to get relocated 
> > value
> > 
> > +  str   x12, [x11, x8]        // write relocated value at offset
> > 
> > +  b     .Lreloc_loop
> > 
> > +
> > 
> > +.Lreloc_done:
> > 
> > +  // set memory per section
> > 
> > +  adr x11, __stmm_start
> > 
> > +  adr x2, __reloc_end
> > 
> > +  ldr x0, =0xC4000065
> > 
> > +  and x1, x11, #~0x0fff      // Align to page
> > 
> > +  sub x2, x2, x11
> > 
> > +  add x2, x2, #0xfff
> > 
> > +  lsr x2, x2, #12            // nr pages
> > 
> > +  ldr x3, =0x3               // Set perms to r/x
> > 
> > +  svc #0
> > 
> > +  // Prevent speculative execution beyond svc instruction
> > 
> > +  dsb nsh
> > 
> > +  isb
> > 
> > +
> > 
> > +  adr   x11, __ro_start
> > 
> > +  adr   x2, __ro_end
> > 
> > +  ldr x0, =0xC4000065
> > 
> > +  and x1, x11, #~0x0fff      // Align to page
> > 
> > +  sub x2, x2, x11
> > 
> > +  add x2, x2, #0xfff
> > 
> > +  lsr x2, x2, #12            // nr pages
> > 
> > +  ldr x3, =0x1               // Set perms to r/o
> > 
> > +  svc #0
> > 
> > +  // Prevent speculative execution beyond svc instruction
> > 
> > +  dsb nsh
> > 
> > +  isb
> > 
> > +
> > 
> > +  mov x0, x20
> > 
> > +  mov x1, x21
> > 
> > +  mov x2, x22
> > 
> > +  mov x3, x23
> > 
> > +
> > 
> > +  ret
> > 
> > diff --git
> > a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/Standalon
> > eMmCoreEntryPoint.c
> > b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/Standalon
> > eMmCoreEntryPoint.c
> > index 20723385113f..57c3162ab5d0 100644
> > ---
> > a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/Standalon
> > eMmCoreEntryPoint.c
> > +++
> > b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/Standalon
> > eMmCoreEntryPoint.c
> > @@ -22,6 +22,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
> >  #include <Library/HobLib.h>
> > 
> >  #include <Library/BaseLib.h>
> > 
> >  #include <Library/BaseMemoryLib.h>
> > 
> > +#include <Library/PcdLib.h>
> > 
> >  #include <Library/SerialPortLib.h>
> > 
> > 
> > 
> >  #include <IndustryStandard/ArmStdSmc.h>
> > 
> > @@ -209,7 +210,7 @@ GetSpmVersion (VOID)
> >  **/
> > 
> >  VOID
> > 
> >  EFIAPI
> > 
> > -_ModuleEntryPoint (
> > 
> > +ModuleEntryPoint (
> > 
> >    IN VOID    *SharedBufAddress,
> > 
> >    IN UINT64  SharedBufSize,
> > 
> >    IN UINT64  cookie1,
> > 
> > @@ -238,6 +239,9 @@ _ModuleEntryPoint (
> >      goto finish;
> > 
> >    }
> > 
> > 
> > 
> > +  if (FeaturePcdGet (PcdStMMReloc)) {
> > 
> > +    goto skip_remap;
> > 
> > +  }
> > 
> >    // Locate PE/COFF File information for the Standalone MM core module
> > 
> >    Status = LocateStandaloneMmCorePeCoffData (
> > 
> >               (EFI_FIRMWARE_VOLUME_HEADER *) PayloadBootInfo->SpImageBase,
> > 
> > @@ -276,6 +280,7 @@ _ModuleEntryPoint (
> >      goto finish;
> > 
> >    }
> > 
> > 
> > 
> > +skip_remap:
> > 
> >    //
> > 
> >    // Create Hoblist based upon boot information passed by privileged 
> > software
> > 
> >    //
> > 
> > diff --git
> > a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCor
> > eEntryPoint.inf
> > b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCor
> > eEntryPoint.inf
> > index 891c292e92f8..6659219404a5 100644
> > ---
> > a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCor
> > eEntryPoint.inf
> > +++
> > b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCor
> > eEntryPoint.inf
> > @@ -25,6 +25,7 @@
> >    AArch64/StandaloneMmCoreEntryPoint.c
> > 
> >    AArch64/SetPermissions.c
> > 
> >    AArch64/CreateHobList.c
> > 
> > +  AArch64/ModuleEntryPoint.S
> > 
> > 
> > 
> >  [Packages]
> > 
> >    MdePkg/MdePkg.dec
> > 
> > @@ -48,3 +49,6 @@
> >    gEfiMmPeiMmramMemoryReserveGuid
> > 
> >    gEfiStandaloneMmNonSecureBufferGuid
> > 
> >    gEfiArmTfCpuDriverEpDescriptorGuid
> > 
> > +
> > 
> > +[FeaturePcd]
> > 
> > +  gStandaloneMmPkgTokenSpaceGuid.PcdStMMReloc|FALSE
> > 
> > diff --git
> > a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCor
> > eEntryPointRelocatable.inf
> > b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCor
> > eEntryPointRelocatable.inf
> > new file mode 100644
> > index 000000000000..10cdae1b4018
> > --- /dev/null
> > +++
> > b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCor
> > eEntryPointRelocatable.inf
> > @@ -0,0 +1,54 @@
> > +## @file
> > 
> > +# Module entry point library for DXE core.
> > 
> > +#
> > 
> > +# Copyright (c) 2020, ARM Ltd. All rights reserved.<BR>
> > 
> > +#
> > 
> > +#  SPDX-License-Identifier: BSD-2-Clause-Patent
> > 
> > +#
> > 
> > +#
> > 
> > +##
> > 
> > +
> > 
> > +[Defines]
> > 
> > +  INF_VERSION                    = 0x0001001A
> > 
> > +  BASE_NAME                      = StandaloneMmCoreEntryPoint
> > 
> > +  FILE_GUID                      = C97AC593-109A-4C63-905C-675FDE2689E8
> > 
> > +  MODULE_TYPE                    = MM_CORE_STANDALONE
> > 
> > +  VERSION_STRING                 = 1.0
> > 
> > +  PI_SPECIFICATION_VERSION       = 0x00010032
> > 
> > +  LIBRARY_CLASS                  =
> > StandaloneMmCoreEntryPoint|MM_CORE_STANDALONE
> > 
> > +
> > 
> > +#
> > 
> > +#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC (EBC is for build only)
> > 
> > +#
> > 
> > +
> > 
> > +[Sources.AARCH64]
> > 
> > +  AArch64/StandaloneMmCoreEntryPoint.c
> > 
> > +  AArch64/SetPermissions.c
> > 
> > +  AArch64/CreateHobList.c
> > 
> > +  AArch64/ModuleEntryPoint.S
> > 
> > +
> > 
> > +[Packages]
> > 
> > +  MdePkg/MdePkg.dec
> > 
> > +  MdeModulePkg/MdeModulePkg.dec
> > 
> > +  StandaloneMmPkg/StandaloneMmPkg.dec
> > 
> > +
> > 
> > +[Packages.AARCH64]
> > 
> > +  ArmPkg/ArmPkg.dec
> > 
> > +  ArmPlatformPkg/ArmPlatformPkg.dec
> > 
> > +
> > 
> > +[LibraryClasses]
> > 
> > +  BaseLib
> > 
> > +  DebugLib
> > 
> > +
> > 
> > +[LibraryClasses.AARCH64]
> > 
> > +  StandaloneMmMmuLib
> > 
> > +  ArmSvcLib
> > 
> > +
> > 
> > +[Guids]
> > 
> > +  gMpInformationHobGuid
> > 
> > +  gEfiMmPeiMmramMemoryReserveGuid
> > 
> > +  gEfiStandaloneMmNonSecureBufferGuid
> > 
> > +  gEfiArmTfCpuDriverEpDescriptorGuid
> > 
> > +
> > 
> > +[FeaturePcd]
> > 
> > +  gStandaloneMmPkgTokenSpaceGuid.PcdStMMReloc|TRUE
> > 
> > diff --git a/StandaloneMmPkg/StandaloneMmPkg.dec
> > b/StandaloneMmPkg/StandaloneMmPkg.dec
> > index 82cb62568b53..cc572321a5b6 100644
> > --- a/StandaloneMmPkg/StandaloneMmPkg.dec
> > +++ b/StandaloneMmPkg/StandaloneMmPkg.dec
> > @@ -33,3 +33,5 @@
> >    gEfiStandaloneMmNonSecureBufferGuid      = { 0xf00497e3, 0xbfa2, 0x41a1,
> > { 0x9d, 0x29, 0x54, 0xc2, 0xe9, 0x37, 0x21, 0xc5 }}
> > 
> >    gEfiArmTfCpuDriverEpDescriptorGuid       = { 0x6ecbd5a1, 0xc0f8, 0x4702,
> > { 0x83, 0x01, 0x4f, 0xc2, 0xc5, 0x47, 0x0a, 0x51 }}
> > 
> > 
> > 
> > +[PcdsFeatureFlag]
> > 
> > +
> > gStandaloneMmPkgTokenSpaceGuid.PcdStMMReloc|FALSE|BOOLEAN|0x00000
> > 001
> > 
> > --
> > 2.27.0
> 

-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#60900): https://edk2.groups.io/g/devel/message/60900
Mute This Topic: https://groups.io/mt/74724586/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to