[PATCH v4 5/5] StandaloneMmPkg: build for 32bit arm machines


Sami Mujawar
 

Hi Liming,

I will look into this shortly.

Regards,

Sami Mujawar


From: gaoliming <gaoliming@...>
Sent: Wednesday, 28 July 2021, 7:33 am
To: devel@edk2.groups.io; gaoliming@...; ardb@...
Cc: Sami Mujawar; 'Etienne Carriere'; Achin Gupta; 'Ard Biesheuvel'; 'Jiewen Yao'; 'Leif Lindholm'; 'Sughosh Ganu'; nd
Subject: 回复: [edk2-devel] [PATCH v4 5/5] StandaloneMmPkg: build for 32bit arm machines

Ard and Sami:
  Will you help merge this patch set for 202108 stable tag?

Thanks
Liming
> -----邮件原件-----
> 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 gaoliming
> 发送时间: 2021年7月20日 17:21
> 收件人: devel@edk2.groups.io; ardb@...
> 抄送: 'Sami Mujawar' <sami.mujawar@...>; 'Etienne Carriere'
> <etienne.carriere@...>; 'Achin Gupta' <achin.gupta@...>; 'Ard
> Biesheuvel' <ardb+tianocore@...>; 'Jiewen Yao'
> <jiewen.yao@...>; 'Leif Lindholm' <leif@...>; 'Sughosh
> Ganu' <sughosh.ganu@...>; 'nd' <nd@...>
> 主题: 回复: [edk2-devel] [PATCH v4 5/5] StandaloneMmPkg: build for 32bit
> arm machines
>
> Ard:
>   Thanks! I have added this feature into
> https://github.com/tianocore/tianocore.github.io/wiki/EDK-II-Release-Planni
> ng.
>
> Thanks
> Liming
> > -----邮件原件-----
> > 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Ard
> > Biesheuvel
> > 发送时间: 2021年7月20日 15:46
> > 收件人: edk2-devel-groups-io <devel@edk2.groups.io>; Liming Gao
> (Byosoft
> > address) <gaoliming@...>
> > 抄送: Sami Mujawar <sami.mujawar@...>; Etienne Carriere
> > <etienne.carriere@...>; Achin Gupta <achin.gupta@...>; Ard
> > Biesheuvel <ardb+tianocore@...>; Jiewen Yao
> > <jiewen.yao@...>; Leif Lindholm <leif@...>; Sughosh
> Ganu
> > <sughosh.ganu@...>; nd <nd@...>
> > 主题: Re: [edk2-devel] [PATCH v4 5/5] StandaloneMmPkg: build for 32bit
> arm
> > machines
> >
> > On Tue, 20 Jul 2021 at 04:01, gaoliming <gaoliming@...>
> wrote:
> > >
> > > Hi, all
> > >   This patch set has passed code review. How about merge it for this
> > stable tag edk2 202108?
> > >
> >
> > OK, I will pick these up. Would you mind creating the entry for the
> > release notes?
> >
> >
> > > Thanks
> > > Liming
> > > > -----邮件原件-----
> > > > 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Sami
> > > > Mujawar
> > > > 发送时间: 2021年5月19日 17:58
> > > > 收件人: Etienne Carriere <etienne.carriere@...>;
> > > > devel@edk2.groups.io
> > > > 抄送: Achin Gupta <achin.gupta@...>; Ard Biesheuvel
> > > > <ardb+tianocore@...>; Jiewen Yao <jiewen.yao@...>;
> Leif
> > > > Lindholm <leif@...>; Sughosh Ganu
> > <sughosh.ganu@...>;
> > > > nd@...
> > > > 主题: Re: [edk2-devel] [PATCH v4 5/5] StandaloneMmPkg: build for
> 32bit
> > arm
> > > > machines
> > > >
> > > > Hi Etienn,
> > > >
> > > > This patch looks good to me.
> > > >
> > > > Reviewed-by: Sami Mujawar <sami.mujawar@...>
> > > >
> > > > Regards,
> > > >
> > > > Sami Mujawar
> > > >
> > > > On 19/05/2021 08:14 AM, Etienne Carriere wrote:
> > > > > This change allows to build StandaloneMmPkg components for 32bit
> > Arm
> > > > > StandaloneMm firmware.
> > > > >
> > > > > This change mainly moves AArch64/ source files to Arm/ side directory
> > > > > for several components:  StandaloneMmCpu,
> > > > StandaloneMmCoreEntryPoint
> > > > > and StandaloneMmMemLib. The source file is built for both 32b and
> 64b
> > > > > Arm targets.
> > > > >
> > > > > Signed-off-by: Etienne Carriere <etienne.carriere@...>
> > > > > ---
> > > > > Changes since v3:
> > > > > - Fix BuildOptions.ARM in StandaloneMmPkg.
> > > > > - Remove Cc tags.
> > > > >
> > > > > No change since v2
> > > > >
> > > > > Changes since v1:
> > > > > - ARM_SMC_ID_MM_COMMUNICATE 32b/64b agnostic helper ID is
> > > > defined
> > > > >    in ArmStdSmc.h (see 1st commit in this series) instead of being
> > > > >    local to EventHandle.c.
> > > > > - Fix void occurrence to VOID.
> > > > > - Fix path in StandaloneMmPkg/StandaloneMmPkg.dsc
> > > > > ---
> > > > >   StandaloneMmPkg/Core/StandaloneMmCore.inf
> > > > |  2 +-
> > > > >   StandaloneMmPkg/Drivers/StandaloneMmCpu/{AArch64
> > > > => }/EventHandle.c
> > > > |  5 +++--
> > > > >   StandaloneMmPkg/Drivers/StandaloneMmCpu/{AArch64
> > > > => }/StandaloneMmCpu.c
> > > > |  2 +-
> > > > >   StandaloneMmPkg/Drivers/StandaloneMmCpu/{AArch64
> > > > => }/StandaloneMmCpu.h
> > > > |  0
> > > > >   StandaloneMmPkg/Drivers/StandaloneMmCpu/{AArch64
> > > > => }/StandaloneMmCpu.inf
> > > > |  0
> > > > >   StandaloneMmPkg/Include/Library/{AArch64 =>
> > > > Arm}/StandaloneMmCoreEntryPoint.h
> > > > |  0
> > > > >
> StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/{AArch64
> > =>
> > > > Arm}/CreateHobList.c                                  |  2 +-
> > > > >
> StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/{AArch64
> > =>
> > > > Arm}/SetPermissions.c                                 |  2 +-
> > > > >
> StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/{AArch64
> > =>
> > > > Arm}/StandaloneMmCoreEntryPoint.c                     | 16
> > > > ++++++++--------
> > > > >
> > > >
> >
> StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCor
> > > > eEntryPoint.inf                                    | 14
> > > > +++++++-------
> > > > >   StandaloneMmPkg/Library/StandaloneMmCoreHobLib/{AArch64
> =>
> > > > Arm}/StandaloneMmCoreHobLib.c                             |
> > 0
> > > > >   StandaloneMmPkg/Library/StandaloneMmCoreHobLib/{AArch64
> =>
> > > > Arm}/StandaloneMmCoreHobLibInternal.c                     |
> 0
> > > > >
> > > >
> >
> StandaloneMmPkg/Library/StandaloneMmCoreHobLib/StandaloneMmCoreH
> > > > obLib.inf                                            |  8
> > ++++----
> > > > >
> > > >
> >
> StandaloneMmPkg/Library/StandaloneMmMemLib/{AArch64/StandaloneMm
> > > > MemLibInternal.c => ArmStandaloneMmMemLibInternal.c} |  9
> > ++++++++-
> > > > >
> > > >
> >
> StandaloneMmPkg/Library/StandaloneMmMemLib/StandaloneMmMemLib.i
> > > > nf                                                    |  6
> > > > +++---
> > > > >
> > > >
> >
> StandaloneMmPkg/Library/VariableMmDependency/VariableMmDependenc
> > > > y.inf                                                |  2 +-
> > > > >   StandaloneMmPkg/StandaloneMmPkg.dsc
> > > > | 12 ++++++++----
> > > > >   17 files changed, 46 insertions(+), 34 deletions(-)
> > > > >
> > > > > diff --git a/StandaloneMmPkg/Core/StandaloneMmCore.inf
> > > > b/StandaloneMmPkg/Core/StandaloneMmCore.inf
> > > > > index 87bf6e9440..56042b7b39 100644
> > > > > --- a/StandaloneMmPkg/Core/StandaloneMmCore.inf
> > > > > +++ b/StandaloneMmPkg/Core/StandaloneMmCore.inf
> > > > > @@ -17,7 +17,7 @@
> > > > >     PI_SPECIFICATION_VERSION       = 0x00010032
> > > > >     ENTRY_POINT                    = StandaloneMmMain
> > > > >
> > > > > -#  VALID_ARCHITECTURES           = IA32 X64 AARCH64
> > > > > +#  VALID_ARCHITECTURES           = IA32 X64 AARCH64 ARM
> > > > >
> > > > >   [Sources]
> > > > >     StandaloneMmCore.c
> > > > > diff --git
> > > >
> a/StandaloneMmPkg/Drivers/StandaloneMmCpu/AArch64/EventHandle.c
> > > > b/StandaloneMmPkg/Drivers/StandaloneMmCpu/EventHandle.c
> > > > > similarity index 95%
> > > > > rename from
> > > > StandaloneMmPkg/Drivers/StandaloneMmCpu/AArch64/EventHandle.c
> > > > > rename to
> > StandaloneMmPkg/Drivers/StandaloneMmCpu/EventHandle.c
> > > > > index 63fbe26642..165d696f99 100644
> > > > > ---
> > > >
> a/StandaloneMmPkg/Drivers/StandaloneMmCpu/AArch64/EventHandle.c
> > > > > +++ b/StandaloneMmPkg/Drivers/StandaloneMmCpu/EventHandle.c
> > > > > @@ -2,6 +2,7 @@
> > > > >
> > > > >     Copyright (c) 2016 HP Development Company, L.P.
> > > > >     Copyright (c) 2016 - 2021, Arm Limited. All rights reserved.
> > > > > +  Copyright (c) 2021, Linaro Limited
> > > > >
> > > > >     SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > >
> > > > > @@ -92,8 +93,8 @@ PiMmStandaloneArmTfCpuDriverEntry (
> > > > >     // receipt of a synchronous MM request. Use the Event ID to
> > > > distinguish
> > > > >     // between synchronous and asynchronous events.
> > > > >     //
> > > > > -  if ((ARM_SMC_ID_MM_COMMUNICATE_AARCH64 != EventId) &&
> > > > > -      (ARM_SVC_ID_FFA_MSG_SEND_DIRECT_REQ_AARCH64 !=
> > > > EventId)) {
> > > > > +  if ((ARM_SMC_ID_MM_COMMUNICATE != EventId) &&
> > > > > +      (ARM_SVC_ID_FFA_MSG_SEND_DIRECT_REQ != EventId)) {
> > > > >       DEBUG ((DEBUG_INFO, "UnRecognized Event - 0x%x\n",
> > EventId));
> > > > >       return EFI_INVALID_PARAMETER;
> > > > >     }
> > > > > diff --git
> > > >
> >
> a/StandaloneMmPkg/Drivers/StandaloneMmCpu/AArch64/StandaloneMmCp
> > > > u.c
> > b/StandaloneMmPkg/Drivers/StandaloneMmCpu/StandaloneMmCpu.c
> > > > > similarity index 96%
> > > > > rename from
> > > >
> >
> StandaloneMmPkg/Drivers/StandaloneMmCpu/AArch64/StandaloneMmCpu.
> > > > c
> > > > > rename to
> > > > StandaloneMmPkg/Drivers/StandaloneMmCpu/StandaloneMmCpu.c
> > > > > index d4590bcd19..10097f792f 100644
> > > > > ---
> > > >
> >
> a/StandaloneMmPkg/Drivers/StandaloneMmCpu/AArch64/StandaloneMmCp
> > > > u.c
> > > > > +++
> > b/StandaloneMmPkg/Drivers/StandaloneMmCpu/StandaloneMmCpu.c
> > > > > @@ -10,7 +10,7 @@
> > > > >
> > > > >   #include <Base.h>
> > > > >   #include <Pi/PiMmCis.h>
> > > > > -#include <Library/AArch64/StandaloneMmCoreEntryPoint.h>
> > > > > +#include <Library/Arm/StandaloneMmCoreEntryPoint.h>
> > > > >   #include <Library/DebugLib.h>
> > > > >   #include <Library/ArmSvcLib.h>
> > > > >   #include <Library/ArmLib.h>
> > > > > diff --git
> > > >
> >
> a/StandaloneMmPkg/Drivers/StandaloneMmCpu/AArch64/StandaloneMmCp
> > > > u.h
> > b/StandaloneMmPkg/Drivers/StandaloneMmCpu/StandaloneMmCpu.h
> > > > > similarity index 100%
> > > > > rename from
> > > >
> >
> StandaloneMmPkg/Drivers/StandaloneMmCpu/AArch64/StandaloneMmCpu.
> > > > h
> > > > > rename to
> > > > StandaloneMmPkg/Drivers/StandaloneMmCpu/StandaloneMmCpu.h
> > > > > diff --git
> > > >
> >
> a/StandaloneMmPkg/Drivers/StandaloneMmCpu/AArch64/StandaloneMmCp
> > > > u.inf
> > b/StandaloneMmPkg/Drivers/StandaloneMmCpu/StandaloneMmCpu.inf
> > > > > similarity index 100%
> > > > > rename from
> > > >
> >
> StandaloneMmPkg/Drivers/StandaloneMmCpu/AArch64/StandaloneMmCpu.i
> > > > nf
> > > > > rename to
> > > > StandaloneMmPkg/Drivers/StandaloneMmCpu/StandaloneMmCpu.inf
> > > > > diff --git
> > > >
> >
> a/StandaloneMmPkg/Include/Library/AArch64/StandaloneMmCoreEntryPoin
> > > > t.h
> > > >
> > b/StandaloneMmPkg/Include/Library/Arm/StandaloneMmCoreEntryPoint.h
> > > > > similarity index 100%
> > > > > rename from
> > > >
> >
> StandaloneMmPkg/Include/Library/AArch64/StandaloneMmCoreEntryPoint.h
> > > > > rename to
> > > >
> StandaloneMmPkg/Include/Library/Arm/StandaloneMmCoreEntryPoint.h
> > > > > diff --git
> > > >
> >
> a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/Create
> > > > HobList.c
> > > >
> >
> b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/CreateHob
> > > > List.c
> > > > > similarity index 97%
> > > > > rename from
> > > >
> >
> StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/CreateHo
> > > > bList.c
> > > > > rename to
> > > >
> >
> StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/CreateHobLis
> > > > t.c
> > > > > index 4d4cf3d5ff..85f8194687 100644
> > > > > ---
> > > >
> >
> a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/Create
> > > > HobList.c
> > > > > +++
> > > >
> >
> b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/CreateHob
> > > > List.c
> > > > > @@ -14,7 +14,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > >   #include <Guid/MmramMemoryReserve.h>
> > > > >   #include <Guid/MpInformation.h>
> > > > >
> > > > > -#include <Library/AArch64/StandaloneMmCoreEntryPoint.h>
> > > > > +#include <Library/Arm/StandaloneMmCoreEntryPoint.h>
> > > > >   #include <Library/ArmMmuLib.h>
> > > > >   #include <Library/ArmSvcLib.h>
> > > > >   #include <Library/DebugLib.h>
> > > > > diff --git
> > > >
> >
> a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/SetPer
> > > > missions.c
> > > >
> >
> b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/SetPermissi
> > > > ons.c
> > > > > similarity index 96%
> > > > > rename from
> > > >
> >
> StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/SetPermi
> > > > ssions.c
> > > > > rename to
> > > >
> >
> StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/SetPermissio
> > > > ns.c
> > > > > index 4a380df4a6..cd4b90823e 100644
> > > > > ---
> > > >
> >
> a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/SetPer
> > > > missions.c
> > > > > +++
> > > >
> >
> b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/SetPermissi
> > > > ons.c
> > > > > @@ -14,7 +14,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > >   #include <Guid/MmramMemoryReserve.h>
> > > > >   #include <Guid/MpInformation.h>
> > > > >
> > > > > -#include <Library/AArch64/StandaloneMmCoreEntryPoint.h>
> > > > > +#include <Library/Arm/StandaloneMmCoreEntryPoint.h>
> > > > >   #include <Library/ArmMmuLib.h>
> > > > >   #include <Library/ArmSvcLib.h>
> > > > >   #include <Library/DebugLib.h>
> > > > > diff --git
> > > >
> >
> a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/Standa
> > > > loneMmCoreEntryPoint.c
> > > >
> >
> b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/Standalone
> > > > MmCoreEntryPoint.c
> > > > > similarity index 94%
> > > > > rename from
> > > >
> >
> StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/Standalo
> > > > neMmCoreEntryPoint.c
> > > > > rename to
> > > >
> >
> StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/StandaloneM
> > > > mCoreEntryPoint.c
> > > > > index b445d6942e..49cf51a789 100644
> > > > > ---
> > > >
> >
> a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/Standa
> > > > loneMmCoreEntryPoint.c
> > > > > +++
> > > >
> >
> b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/Standalone
> > > > MmCoreEntryPoint.c
> > > > > @@ -10,7 +10,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
> > > > >
> > > > >   #include <PiMm.h>
> > > > >
> > > > > -#include <Library/AArch64/StandaloneMmCoreEntryPoint.h>
> > > > > +#include <Library/Arm/StandaloneMmCoreEntryPoint.h>
> > > > >
> > > > >   #include <PiPei.h>
> > > > >   #include <Guid/MmramMemoryReserve.h>
> > > > > @@ -182,13 +182,13 @@ DelegatedEventLoop (
> > > > >       }
> > > > >
> > > > >       if (FfaEnabled) {
> > > > > -      EventCompleteSvcArgs->Arg0 =
> > > > ARM_SVC_ID_FFA_MSG_SEND_DIRECT_RESP_AARCH64;
> > > > > +      EventCompleteSvcArgs->Arg0 =
> > > > ARM_SVC_ID_FFA_MSG_SEND_DIRECT_RESP;
> > > > >         EventCompleteSvcArgs->Arg1 = 0;
> > > > >         EventCompleteSvcArgs->Arg2 = 0;
> > > > > -      EventCompleteSvcArgs->Arg3 =
> > > > ARM_SVC_ID_SP_EVENT_COMPLETE_AARCH64;
> > > > > +      EventCompleteSvcArgs->Arg3 =
> > > > ARM_SVC_ID_SP_EVENT_COMPLETE;
> > > > >         EventCompleteSvcArgs->Arg4 = SvcStatus;
> > > > >       } else {
> > > > > -      EventCompleteSvcArgs->Arg0 =
> > > > ARM_SVC_ID_SP_EVENT_COMPLETE_AARCH64;
> > > > > +      EventCompleteSvcArgs->Arg0 =
> > > > ARM_SVC_ID_SP_EVENT_COMPLETE;
> > > > >         EventCompleteSvcArgs->Arg1 = SvcStatus;
> > > > >       }
> > > > >     }
> > > > > @@ -273,13 +273,13 @@ InitArmSvcArgs (
> > > > >     )
> > > > >   {
> > > > >     if (FeaturePcdGet (PcdFfaEnable)) {
> > > > > -    InitMmFoundationSvcArgs->Arg0 =
> > > > ARM_SVC_ID_FFA_MSG_SEND_DIRECT_RESP_AARCH64;
> > > > > +    InitMmFoundationSvcArgs->Arg0 =
> > > > ARM_SVC_ID_FFA_MSG_SEND_DIRECT_RESP;
> > > > >       InitMmFoundationSvcArgs->Arg1 = 0;
> > > > >       InitMmFoundationSvcArgs->Arg2 = 0;
> > > > > -    InitMmFoundationSvcArgs->Arg3 =
> > > > ARM_SVC_ID_SP_EVENT_COMPLETE_AARCH64;
> > > > > +    InitMmFoundationSvcArgs->Arg3 =
> > > > ARM_SVC_ID_SP_EVENT_COMPLETE;
> > > > >       InitMmFoundationSvcArgs->Arg4 = *Ret;
> > > > >     } else {
> > > > > -    InitMmFoundationSvcArgs->Arg0 =
> > > > ARM_SVC_ID_SP_EVENT_COMPLETE_AARCH64;
> > > > > +    InitMmFoundationSvcArgs->Arg0 =
> > > > ARM_SVC_ID_SP_EVENT_COMPLETE;
> > > > >       InitMmFoundationSvcArgs->Arg1 = *Ret;
> > > > >     }
> > > > >   }
> > > > > @@ -395,7 +395,7 @@ _ModuleEntryPoint (
> > > > >     //
> > > > >     ProcessModuleEntryPointList (HobStart);
> > > > >
> > > > > -  DEBUG ((DEBUG_INFO, "Shared Cpu Driver EP 0x%lx\n", (UINT64)
> > > > CpuDriverEntryPoint));
> > > > > +  DEBUG ((DEBUG_INFO, "Shared Cpu Driver EP %p\n", (VOID *)
> > > > CpuDriverEntryPoint));
> > > > >
> > > > >   finish:
> > > > >     if (Status == RETURN_UNSUPPORTED) {
> > > > > diff --git
> > > >
> >
> a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMm
> > > > CoreEntryPoint.inf
> > > >
> >
> b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMm
> > > > CoreEntryPoint.inf
> > > > > index 4fa426f58e..1762586cfa 100644
> > > > > ---
> > > >
> >
> a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMm
> > > > CoreEntryPoint.inf
> > > > > +++
> > > >
> >
> b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMm
> > > > CoreEntryPoint.inf
> > > > > @@ -21,10 +21,10 @@
> > > > >   #  VALID_ARCHITECTURES           = IA32 X64 IPF EBC (EBC
> is
> > for
> > > > build only)
> > > > >   #
> > > > >
> > > > > -[Sources.AARCH64]
> > > > > -  AArch64/StandaloneMmCoreEntryPoint.c
> > > > > -  AArch64/SetPermissions.c
> > > > > -  AArch64/CreateHobList.c
> > > > > +[Sources.AARCH64, Sources.ARM]
> > > > > +  Arm/StandaloneMmCoreEntryPoint.c
> > > > > +  Arm/SetPermissions.c
> > > > > +  Arm/CreateHobList.c
> > > > >
> > > > >   [Sources.X64]
> > > > >     X64/StandaloneMmCoreEntryPoint.c
> > > > > @@ -34,14 +34,14 @@
> > > > >     MdeModulePkg/MdeModulePkg.dec
> > > > >     StandaloneMmPkg/StandaloneMmPkg.dec
> > > > >
> > > > > -[Packages.AARCH64]
> > > > > +[Packages.ARM, Packages.AARCH64]
> > > > >     ArmPkg/ArmPkg.dec
> > > > >
> > > > >   [LibraryClasses]
> > > > >     BaseLib
> > > > >     DebugLib
> > > > >
> > > > > -[LibraryClasses.AARCH64]
> > > > > +[LibraryClasses.ARM, LibraryClasses.AARCH64]
> > > > >     StandaloneMmMmuLib
> > > > >     ArmSvcLib
> > > > >
> > > > > @@ -51,7 +51,7 @@
> > > > >     gEfiStandaloneMmNonSecureBufferGuid
> > > > >     gEfiArmTfCpuDriverEpDescriptorGuid
> > > > >
> > > > > -[FeaturePcd.AARCH64]
> > > > > +[FeaturePcd.ARM, FeaturePcd.AARCH64]
> > > > >     gArmTokenSpaceGuid.PcdFfaEnable
> > > > >
> > > > >   [BuildOptions]
> > > > > diff --git
> > > >
> >
> a/StandaloneMmPkg/Library/StandaloneMmCoreHobLib/AArch64/Standalon
> > > > eMmCoreHobLib.c
> > > >
> >
> b/StandaloneMmPkg/Library/StandaloneMmCoreHobLib/Arm/StandaloneM
> > > > mCoreHobLib.c
> > > > > similarity index 100%
> > > > > rename from
> > > >
> >
> StandaloneMmPkg/Library/StandaloneMmCoreHobLib/AArch64/Standalone
> > > > MmCoreHobLib.c
> > > > > rename to
> > > >
> >
> StandaloneMmPkg/Library/StandaloneMmCoreHobLib/Arm/StandaloneMmC
> > > > oreHobLib.c
> > > > > diff --git
> > > >
> >
> a/StandaloneMmPkg/Library/StandaloneMmCoreHobLib/AArch64/Standalon
> > > > eMmCoreHobLibInternal.c
> > > >
> >
> b/StandaloneMmPkg/Library/StandaloneMmCoreHobLib/Arm/StandaloneM
> > > > mCoreHobLibInternal.c
> > > > > similarity index 100%
> > > > > rename from
> > > >
> >
> StandaloneMmPkg/Library/StandaloneMmCoreHobLib/AArch64/Standalone
> > > > MmCoreHobLibInternal.c
> > > > > rename to
> > > >
> >
> StandaloneMmPkg/Library/StandaloneMmCoreHobLib/Arm/StandaloneMmC
> > > > oreHobLibInternal.c
> > > > > diff --git
> > > >
> >
> a/StandaloneMmPkg/Library/StandaloneMmCoreHobLib/StandaloneMmCore
> > > > HobLib.inf
> > > >
> >
> b/StandaloneMmPkg/Library/StandaloneMmCoreHobLib/StandaloneMmCore
> > > > HobLib.inf
> > > > > index a2559920e8..34ed536480 100644
> > > > > ---
> > > >
> >
> a/StandaloneMmPkg/Library/StandaloneMmCoreHobLib/StandaloneMmCore
> > > > HobLib.inf
> > > > > +++
> > > >
> >
> b/StandaloneMmPkg/Library/StandaloneMmCoreHobLib/StandaloneMmCore
> > > > HobLib.inf
> > > > > @@ -22,7 +22,7 @@
> > > > >     LIBRARY_CLASS                  =
> > > > HobLib|MM_CORE_STANDALONE
> > > > >
> > > > >   #
> > > > > -#  VALID_ARCHITECTURES           = X64 AARCH64
> > > > > +#  VALID_ARCHITECTURES           = X64 AARCH64 ARM
> > > > >   #
> > > > >   [Sources.common]
> > > > >     Common.c
> > > > > @@ -30,9 +30,9 @@
> > > > >   [Sources.X64]
> > > > >     X64/StandaloneMmCoreHobLib.c
> > > > >
> > > > > -[Sources.AARCH64]
> > > > > -  AArch64/StandaloneMmCoreHobLib.c
> > > > > -  AArch64/StandaloneMmCoreHobLibInternal.c
> > > > > +[Sources.AARCH64, Sources.ARM]
> > > > > +  Arm/StandaloneMmCoreHobLib.c
> > > > > +  Arm/StandaloneMmCoreHobLibInternal.c
> > > > >
> > > > >   [Packages]
> > > > >     MdePkg/MdePkg.dec
> > > > > diff --git
> > > >
> >
> a/StandaloneMmPkg/Library/StandaloneMmMemLib/AArch64/StandaloneM
> > > > mMemLibInternal.c
> > > >
> >
> b/StandaloneMmPkg/Library/StandaloneMmMemLib/ArmStandaloneMmMe
> > > > mLibInternal.c
> > > > > similarity index 86%
> > > > > rename from
> > > >
> >
> StandaloneMmPkg/Library/StandaloneMmMemLib/AArch64/StandaloneMm
> > > > MemLibInternal.c
> > > > > rename to
> > > >
> >
> StandaloneMmPkg/Library/StandaloneMmMemLib/ArmStandaloneMmMemL
> > > > ibInternal.c
> > > > > index 4124959e04..fa7df46413 100644
> > > > > ---
> > > >
> >
> a/StandaloneMmPkg/Library/StandaloneMmMemLib/AArch64/StandaloneM
> > > > mMemLibInternal.c
> > > > > +++
> > > >
> >
> b/StandaloneMmPkg/Library/StandaloneMmMemLib/ArmStandaloneMmMe
> > > > mLibInternal.c
> > > > > @@ -20,6 +20,13 @@
> > > > >   //
> > > > >   extern EFI_PHYSICAL_ADDRESS
> > > > mMmMemLibInternalMaximumSupportAddress;
> > > > >
> > > > > +#ifdef MDE_CPU_AARCH64
> > > > > +#define ARM_PHYSICAL_ADDRESS_BITS 36
> > > > > +#endif
> > > > > +#ifdef MDE_CPU_ARM
> > > > > +#define ARM_PHYSICAL_ADDRESS_BITS 32
> > > > > +#endif
> > > > > +
> > > > >   /**
> > > > >     Calculate and save the maximum support address.
> > > > >
> > > > > @@ -31,7 +38,7 @@
> > > > MmMemLibInternalCalculateMaximumSupportAddress (
> > > > >   {
> > > > >     UINT8        PhysicalAddressBits;
> > > > >
> > > > > -  PhysicalAddressBits = 36;
> > > > > +  PhysicalAddressBits = ARM_PHYSICAL_ADDRESS_BITS;
> > > > >
> > > > >     //
> > > > >     // Save the maximum support address in one global variable
> > > > > diff --git
> > > >
> >
> a/StandaloneMmPkg/Library/StandaloneMmMemLib/StandaloneMmMemLib
> > > > .inf
> > > >
> >
> b/StandaloneMmPkg/Library/StandaloneMmMemLib/StandaloneMmMemLib
> > > > .inf
> > > > > index 062b0d7a11..b29d97a746 100644
> > > > > ---
> > > >
> >
> a/StandaloneMmPkg/Library/StandaloneMmMemLib/StandaloneMmMemLib
> > > > .inf
> > > > > +++
> > > >
> >
> b/StandaloneMmPkg/Library/StandaloneMmMemLib/StandaloneMmMemLib
> > > > .inf
> > > > > @@ -28,7 +28,7 @@
> > > > >   #
> > > > >   # The following information is for reference only and not required
> by
> > the
> > > > build tools.
> > > > >   #
> > > > > -#  VALID_ARCHITECTURES           = IA32 X64 AARCH64
> > > > > +#  VALID_ARCHITECTURES           = IA32 X64 AARCH64 ARM
> > > > >   #
> > > > >
> > > > >   [Sources.Common]
> > > > > @@ -37,8 +37,8 @@
> > > > >   [Sources.IA32, Sources.X64]
> > > > >     X86StandaloneMmMemLibInternal.c
> > > > >
> > > > > -[Sources.AARCH64]
> > > > > -  AArch64/StandaloneMmMemLibInternal.c
> > > > > +[Sources.AARCH64, Sources.ARM]
> > > > > +  ArmStandaloneMmMemLibInternal.c
> > > > >
> > > > >   [Packages]
> > > > >     MdePkg/MdePkg.dec
> > > > > diff --git
> > > >
> >
> a/StandaloneMmPkg/Library/VariableMmDependency/VariableMmDepende
> > > > ncy.inf
> > > >
> >
> b/StandaloneMmPkg/Library/VariableMmDependency/VariableMmDepende
> > > > ncy.inf
> > > > > index a2a059c5d6..ffb2a6d083 100644
> > > > > ---
> > > >
> >
> a/StandaloneMmPkg/Library/VariableMmDependency/VariableMmDepende
> > > > ncy.inf
> > > > > +++
> > > >
> >
> b/StandaloneMmPkg/Library/VariableMmDependency/VariableMmDepende
> > > > ncy.inf
> > > > > @@ -20,7 +20,7 @@
> > > > >   #
> > > > >   # The following information is for reference only and not required
> by
> > the
> > > > build tools.
> > > > >   #
> > > > > -#  VALID_ARCHITECTURES           = AARCH64
> > > > > +#  VALID_ARCHITECTURES           = AARCH64|ARM
> > > > >   #
> > > > >   #
> > > > >
> > > > > diff --git a/StandaloneMmPkg/StandaloneMmPkg.dsc
> > > > b/StandaloneMmPkg/StandaloneMmPkg.dsc
> > > > > index 0c45df95e2..8012f93b7d 100644
> > > > > --- a/StandaloneMmPkg/StandaloneMmPkg.dsc
> > > > > +++ b/StandaloneMmPkg/StandaloneMmPkg.dsc
> > > > > @@ -20,7 +20,7 @@
> > > > >     PLATFORM_VERSION               = 1.0
> > > > >     DSC_SPECIFICATION              = 0x00010011
> > > > >     OUTPUT_DIRECTORY               = Build/StandaloneMm
> > > > > -  SUPPORTED_ARCHITECTURES        = AARCH64|X64
> > > > > +  SUPPORTED_ARCHITECTURES        = AARCH64|X64|ARM
> > > > >     BUILD_TARGETS                  = DEBUG|RELEASE
> > > > >     SKUID_IDENTIFIER               = DEFAULT
> > > > >
> > > > > @@ -60,7 +60,7 @@
> > > > >
> > > >
> >
> StandaloneMmDriverEntryPoint|MdePkg/Library/StandaloneMmDriverEntryP
> > > > oint/StandaloneMmDriverEntryPoint.inf
> > > > >
> > > >
> >
> VariableMmDependency|StandaloneMmPkg/Library/VariableMmDependenc
> > > > y/VariableMmDependency.inf
> > > > >
> > > > > -[LibraryClasses.AARCH64]
> > > > > +[LibraryClasses.AARCH64, LibraryClasses.ARM]
> > > > >     ArmLib|ArmPkg/Library/ArmLib/ArmBaseLib.inf
> > > > >
> > > >
> >
> StandaloneMmMmuLib|ArmPkg/Library/StandaloneMmMmuLib/ArmMmuSt
> > > > andaloneMmLib.inf
> > > > >     ArmSvcLib|ArmPkg/Library/ArmSvcLib/ArmSvcLib.inf
> > > > > @@ -118,8 +118,8 @@
> > > > >
> > > >
> >
> StandaloneMmPkg/Library/StandaloneMmMemoryAllocationLib/Standalone
> > > > MmMemoryAllocationLib.inf
> > > > >
> > > >
> >
> StandaloneMmPkg/Library/VariableMmDependency/VariableMmDependenc
> > > > y.inf
> > > > >
> > > > > -[Components.AARCH64]
> > > > > -
> > > >
> >
> StandaloneMmPkg/Drivers/StandaloneMmCpu/AArch64/StandaloneMmCpu.i
> > > > nf
> > > > > +[Components.AARCH64, Components.ARM]
> > > > > +
> > StandaloneMmPkg/Drivers/StandaloneMmCpu/StandaloneMmCpu.inf
> > > > >
> > > >
> >
> StandaloneMmPkg/Library/StandaloneMmPeCoffExtraActionLib/Standalone
> > > > MmPeCoffExtraActionLib.inf
> > > > >
> > > > >
> > > >
> >
> ##############################################################
> > > > #####################################
> > > > > @@ -135,6 +135,10 @@
> > > > >   GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
> > > > -march=armv8-a+nofp -mstrict-align
> > > > >   GCC:*_*_*_CC_FLAGS = -mstrict-align
> > > > >
> > > > > +[BuildOptions.ARM]
> > > > > +GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
> > > > -march=armv7-a
> > > > > +GCC:*_*_*_CC_FLAGS = -fno-stack-protector
> > > > > +
> > > > >   [BuildOptions.X64]
> > > > >     MSFT:*_*_*_DLINK_FLAGS = /ALIGN:4096
> > > > >     GCC:*_GCC*_*_DLINK_FLAGS = -z common-page-size=0x1000
> > > >
> > > >
> > > >
> > > >
> > > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> >
> >
> >
> >
>
>
>
>
>
>
>





Ard Biesheuvel
 

On Wed, 28 Jul 2021 at 08:41, Sami Mujawar <Sami.Mujawar@arm.com> wrote:

Hi Liming,

I will look into this shortly.
I submitted it here

https://github.com/tianocore/edk2/pull/1823

but it triggered a CI failure that was not immediately obvious to me,
and I haven't had time yet to dig into it.



________________________________
From: gaoliming <gaoliming@byosoft.com.cn>
Sent: Wednesday, 28 July 2021, 7:33 am
To: devel@edk2.groups.io; gaoliming@byosoft.com.cn; ardb@kernel.org
Cc: Sami Mujawar; 'Etienne Carriere'; Achin Gupta; 'Ard Biesheuvel'; 'Jiewen Yao'; 'Leif Lindholm'; 'Sughosh Ganu'; nd
Subject: 回复: [edk2-devel] [PATCH v4 5/5] StandaloneMmPkg: build for 32bit arm machines

Ard and Sami:
Will you help merge this patch set for 202108 stable tag?

Thanks
Liming
-----邮件原件-----
发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 gaoliming
发送时间: 2021年7月20日 17:21
收件人: devel@edk2.groups.io; ardb@kernel.org
抄送: 'Sami Mujawar' <sami.mujawar@arm.com>; 'Etienne Carriere'
<etienne.carriere@linaro.org>; 'Achin Gupta' <achin.gupta@arm.com>; 'Ard
Biesheuvel' <ardb+tianocore@kernel.org>; 'Jiewen Yao'
<jiewen.yao@intel.com>; 'Leif Lindholm' <leif@nuviainc.com>; 'Sughosh
Ganu' <sughosh.ganu@linaro.org>; 'nd' <nd@arm.com>
主题: 回复: [edk2-devel] [PATCH v4 5/5] StandaloneMmPkg: build for 32bit
arm machines

Ard:
Thanks! I have added this feature into
https://github.com/tianocore/tianocore.github.io/wiki/EDK-II-Release-Planni
ng.

Thanks
Liming
-----邮件原件-----
发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Ard
Biesheuvel
发送时间: 2021年7月20日 15:46
收件人: edk2-devel-groups-io <devel@edk2.groups.io>; Liming Gao
(Byosoft
address) <gaoliming@byosoft.com.cn>
抄送: Sami Mujawar <sami.mujawar@arm.com>; Etienne Carriere
<etienne.carriere@linaro.org>; Achin Gupta <achin.gupta@arm.com>; Ard
Biesheuvel <ardb+tianocore@kernel.org>; Jiewen Yao
<jiewen.yao@intel.com>; Leif Lindholm <leif@nuviainc.com>; Sughosh
Ganu
<sughosh.ganu@linaro.org>; nd <nd@arm.com>
主题: Re: [edk2-devel] [PATCH v4 5/5] StandaloneMmPkg: build for 32bit
arm
machines

On Tue, 20 Jul 2021 at 04:01, gaoliming <gaoliming@byosoft.com.cn>
wrote:

Hi, all
This patch set has passed code review. How about merge it for this
stable tag edk2 202108?
OK, I will pick these up. Would you mind creating the entry for the
release notes?


Thanks
Liming
-----邮件原件-----
发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Sami
Mujawar
发送时间: 2021年5月19日 17:58
收件人: Etienne Carriere <etienne.carriere@linaro.org>;
devel@edk2.groups.io
抄送: Achin Gupta <achin.gupta@arm.com>; Ard Biesheuvel
<ardb+tianocore@kernel.org>; Jiewen Yao <jiewen.yao@intel.com>;
Leif
Lindholm <leif@nuviainc.com>; Sughosh Ganu
<sughosh.ganu@linaro.org>;
nd@arm.com
主题: Re: [edk2-devel] [PATCH v4 5/5] StandaloneMmPkg: build for
32bit
arm
machines

Hi Etienn,

This patch looks good to me.

Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>

Regards,

Sami Mujawar

On 19/05/2021 08:14 AM, Etienne Carriere wrote:
This change allows to build StandaloneMmPkg components for 32bit
Arm
StandaloneMm firmware.

This change mainly moves AArch64/ source files to Arm/ side directory
for several components: StandaloneMmCpu,
StandaloneMmCoreEntryPoint
and StandaloneMmMemLib. The source file is built for both 32b and
64b
Arm targets.

Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org>
---
Changes since v3:
- Fix BuildOptions.ARM in StandaloneMmPkg.
- Remove Cc tags.

No change since v2

Changes since v1:
- ARM_SMC_ID_MM_COMMUNICATE 32b/64b agnostic helper ID is
defined
in ArmStdSmc.h (see 1st commit in this series) instead of being
local to EventHandle.c.
- Fix void occurrence to VOID.
- Fix path in StandaloneMmPkg/StandaloneMmPkg.dsc
---
StandaloneMmPkg/Core/StandaloneMmCore.inf
| 2 +-
StandaloneMmPkg/Drivers/StandaloneMmCpu/{AArch64
=> }/EventHandle.c
| 5 +++--
StandaloneMmPkg/Drivers/StandaloneMmCpu/{AArch64
=> }/StandaloneMmCpu.c
| 2 +-
StandaloneMmPkg/Drivers/StandaloneMmCpu/{AArch64
=> }/StandaloneMmCpu.h
| 0
StandaloneMmPkg/Drivers/StandaloneMmCpu/{AArch64
=> }/StandaloneMmCpu.inf
| 0
StandaloneMmPkg/Include/Library/{AArch64 =>
Arm}/StandaloneMmCoreEntryPoint.h
| 0
StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/{AArch64
=>
Arm}/CreateHobList.c | 2 +-
StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/{AArch64
=>
Arm}/SetPermissions.c | 2 +-
StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/{AArch64
=>
Arm}/StandaloneMmCoreEntryPoint.c | 16
++++++++--------
StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMmCor
eEntryPoint.inf | 14
+++++++-------
StandaloneMmPkg/Library/StandaloneMmCoreHobLib/{AArch64
=>
Arm}/StandaloneMmCoreHobLib.c |
0
StandaloneMmPkg/Library/StandaloneMmCoreHobLib/{AArch64
=>
Arm}/StandaloneMmCoreHobLibInternal.c |
0
StandaloneMmPkg/Library/StandaloneMmCoreHobLib/StandaloneMmCoreH
obLib.inf | 8
++++----
StandaloneMmPkg/Library/StandaloneMmMemLib/{AArch64/StandaloneMm
MemLibInternal.c => ArmStandaloneMmMemLibInternal.c} | 9
++++++++-
StandaloneMmPkg/Library/StandaloneMmMemLib/StandaloneMmMemLib.i
nf | 6
+++---
StandaloneMmPkg/Library/VariableMmDependency/VariableMmDependenc
y.inf | 2 +-
StandaloneMmPkg/StandaloneMmPkg.dsc
| 12 ++++++++----
17 files changed, 46 insertions(+), 34 deletions(-)

diff --git a/StandaloneMmPkg/Core/StandaloneMmCore.inf
b/StandaloneMmPkg/Core/StandaloneMmCore.inf
index 87bf6e9440..56042b7b39 100644
--- a/StandaloneMmPkg/Core/StandaloneMmCore.inf
+++ b/StandaloneMmPkg/Core/StandaloneMmCore.inf
@@ -17,7 +17,7 @@
PI_SPECIFICATION_VERSION = 0x00010032
ENTRY_POINT = StandaloneMmMain

-# VALID_ARCHITECTURES = IA32 X64 AARCH64
+# VALID_ARCHITECTURES = IA32 X64 AARCH64 ARM

[Sources]
StandaloneMmCore.c
diff --git
a/StandaloneMmPkg/Drivers/StandaloneMmCpu/AArch64/EventHandle.c
b/StandaloneMmPkg/Drivers/StandaloneMmCpu/EventHandle.c
similarity index 95%
rename from
StandaloneMmPkg/Drivers/StandaloneMmCpu/AArch64/EventHandle.c
rename to
StandaloneMmPkg/Drivers/StandaloneMmCpu/EventHandle.c
index 63fbe26642..165d696f99 100644
---
a/StandaloneMmPkg/Drivers/StandaloneMmCpu/AArch64/EventHandle.c
+++ b/StandaloneMmPkg/Drivers/StandaloneMmCpu/EventHandle.c
@@ -2,6 +2,7 @@

Copyright (c) 2016 HP Development Company, L.P.
Copyright (c) 2016 - 2021, Arm Limited. All rights reserved.
+ Copyright (c) 2021, Linaro Limited

SPDX-License-Identifier: BSD-2-Clause-Patent

@@ -92,8 +93,8 @@ PiMmStandaloneArmTfCpuDriverEntry (
// receipt of a synchronous MM request. Use the Event ID to
distinguish
// between synchronous and asynchronous events.
//
- if ((ARM_SMC_ID_MM_COMMUNICATE_AARCH64 != EventId) &&
- (ARM_SVC_ID_FFA_MSG_SEND_DIRECT_REQ_AARCH64 !=
EventId)) {
+ if ((ARM_SMC_ID_MM_COMMUNICATE != EventId) &&
+ (ARM_SVC_ID_FFA_MSG_SEND_DIRECT_REQ != EventId)) {
DEBUG ((DEBUG_INFO, "UnRecognized Event - 0x%x\n",
EventId));
return EFI_INVALID_PARAMETER;
}
diff --git
a/StandaloneMmPkg/Drivers/StandaloneMmCpu/AArch64/StandaloneMmCp
u.c
b/StandaloneMmPkg/Drivers/StandaloneMmCpu/StandaloneMmCpu.c
similarity index 96%
rename from
StandaloneMmPkg/Drivers/StandaloneMmCpu/AArch64/StandaloneMmCpu.
c
rename to
StandaloneMmPkg/Drivers/StandaloneMmCpu/StandaloneMmCpu.c
index d4590bcd19..10097f792f 100644
---
a/StandaloneMmPkg/Drivers/StandaloneMmCpu/AArch64/StandaloneMmCp
u.c
+++
b/StandaloneMmPkg/Drivers/StandaloneMmCpu/StandaloneMmCpu.c
@@ -10,7 +10,7 @@

#include <Base.h>
#include <Pi/PiMmCis.h>
-#include <Library/AArch64/StandaloneMmCoreEntryPoint.h>
+#include <Library/Arm/StandaloneMmCoreEntryPoint.h>
#include <Library/DebugLib.h>
#include <Library/ArmSvcLib.h>
#include <Library/ArmLib.h>
diff --git
a/StandaloneMmPkg/Drivers/StandaloneMmCpu/AArch64/StandaloneMmCp
u.h
b/StandaloneMmPkg/Drivers/StandaloneMmCpu/StandaloneMmCpu.h
similarity index 100%
rename from
StandaloneMmPkg/Drivers/StandaloneMmCpu/AArch64/StandaloneMmCpu.
h
rename to
StandaloneMmPkg/Drivers/StandaloneMmCpu/StandaloneMmCpu.h
diff --git
a/StandaloneMmPkg/Drivers/StandaloneMmCpu/AArch64/StandaloneMmCp
u.inf
b/StandaloneMmPkg/Drivers/StandaloneMmCpu/StandaloneMmCpu.inf
similarity index 100%
rename from
StandaloneMmPkg/Drivers/StandaloneMmCpu/AArch64/StandaloneMmCpu.i
nf
rename to
StandaloneMmPkg/Drivers/StandaloneMmCpu/StandaloneMmCpu.inf
diff --git
a/StandaloneMmPkg/Include/Library/AArch64/StandaloneMmCoreEntryPoin
t.h
b/StandaloneMmPkg/Include/Library/Arm/StandaloneMmCoreEntryPoint.h
similarity index 100%
rename from
StandaloneMmPkg/Include/Library/AArch64/StandaloneMmCoreEntryPoint.h
rename to
StandaloneMmPkg/Include/Library/Arm/StandaloneMmCoreEntryPoint.h
diff --git
a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/Create
HobList.c
b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/CreateHob
List.c
similarity index 97%
rename from
StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/CreateHo
bList.c
rename to
StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/CreateHobLis
t.c
index 4d4cf3d5ff..85f8194687 100644
---
a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/Create
HobList.c
+++
b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/CreateHob
List.c
@@ -14,7 +14,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
#include <Guid/MmramMemoryReserve.h>
#include <Guid/MpInformation.h>

-#include <Library/AArch64/StandaloneMmCoreEntryPoint.h>
+#include <Library/Arm/StandaloneMmCoreEntryPoint.h>
#include <Library/ArmMmuLib.h>
#include <Library/ArmSvcLib.h>
#include <Library/DebugLib.h>
diff --git
a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/SetPer
missions.c
b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/SetPermissi
ons.c
similarity index 96%
rename from
StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/SetPermi
ssions.c
rename to
StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/SetPermissio
ns.c
index 4a380df4a6..cd4b90823e 100644
---
a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/SetPer
missions.c
+++
b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/SetPermissi
ons.c
@@ -14,7 +14,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
#include <Guid/MmramMemoryReserve.h>
#include <Guid/MpInformation.h>

-#include <Library/AArch64/StandaloneMmCoreEntryPoint.h>
+#include <Library/Arm/StandaloneMmCoreEntryPoint.h>
#include <Library/ArmMmuLib.h>
#include <Library/ArmSvcLib.h>
#include <Library/DebugLib.h>
diff --git
a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/Standa
loneMmCoreEntryPoint.c
b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/Standalone
MmCoreEntryPoint.c
similarity index 94%
rename from
StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/Standalo
neMmCoreEntryPoint.c
rename to
StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/StandaloneM
mCoreEntryPoint.c
index b445d6942e..49cf51a789 100644
---
a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/AArch64/Standa
loneMmCoreEntryPoint.c
+++
b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/Arm/Standalone
MmCoreEntryPoint.c
@@ -10,7 +10,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent

#include <PiMm.h>

-#include <Library/AArch64/StandaloneMmCoreEntryPoint.h>
+#include <Library/Arm/StandaloneMmCoreEntryPoint.h>

#include <PiPei.h>
#include <Guid/MmramMemoryReserve.h>
@@ -182,13 +182,13 @@ DelegatedEventLoop (
}

if (FfaEnabled) {
- EventCompleteSvcArgs->Arg0 =
ARM_SVC_ID_FFA_MSG_SEND_DIRECT_RESP_AARCH64;
+ EventCompleteSvcArgs->Arg0 =
ARM_SVC_ID_FFA_MSG_SEND_DIRECT_RESP;
EventCompleteSvcArgs->Arg1 = 0;
EventCompleteSvcArgs->Arg2 = 0;
- EventCompleteSvcArgs->Arg3 =
ARM_SVC_ID_SP_EVENT_COMPLETE_AARCH64;
+ EventCompleteSvcArgs->Arg3 =
ARM_SVC_ID_SP_EVENT_COMPLETE;
EventCompleteSvcArgs->Arg4 = SvcStatus;
} else {
- EventCompleteSvcArgs->Arg0 =
ARM_SVC_ID_SP_EVENT_COMPLETE_AARCH64;
+ EventCompleteSvcArgs->Arg0 =
ARM_SVC_ID_SP_EVENT_COMPLETE;
EventCompleteSvcArgs->Arg1 = SvcStatus;
}
}
@@ -273,13 +273,13 @@ InitArmSvcArgs (
)
{
if (FeaturePcdGet (PcdFfaEnable)) {
- InitMmFoundationSvcArgs->Arg0 =
ARM_SVC_ID_FFA_MSG_SEND_DIRECT_RESP_AARCH64;
+ InitMmFoundationSvcArgs->Arg0 =
ARM_SVC_ID_FFA_MSG_SEND_DIRECT_RESP;
InitMmFoundationSvcArgs->Arg1 = 0;
InitMmFoundationSvcArgs->Arg2 = 0;
- InitMmFoundationSvcArgs->Arg3 =
ARM_SVC_ID_SP_EVENT_COMPLETE_AARCH64;
+ InitMmFoundationSvcArgs->Arg3 =
ARM_SVC_ID_SP_EVENT_COMPLETE;
InitMmFoundationSvcArgs->Arg4 = *Ret;
} else {
- InitMmFoundationSvcArgs->Arg0 =
ARM_SVC_ID_SP_EVENT_COMPLETE_AARCH64;
+ InitMmFoundationSvcArgs->Arg0 =
ARM_SVC_ID_SP_EVENT_COMPLETE;
InitMmFoundationSvcArgs->Arg1 = *Ret;
}
}
@@ -395,7 +395,7 @@ _ModuleEntryPoint (
//
ProcessModuleEntryPointList (HobStart);

- DEBUG ((DEBUG_INFO, "Shared Cpu Driver EP 0x%lx\n", (UINT64)
CpuDriverEntryPoint));
+ DEBUG ((DEBUG_INFO, "Shared Cpu Driver EP %p\n", (VOID *)
CpuDriverEntryPoint));

finish:
if (Status == RETURN_UNSUPPORTED) {
diff --git
a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMm
CoreEntryPoint.inf
b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMm
CoreEntryPoint.inf
index 4fa426f58e..1762586cfa 100644
---
a/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMm
CoreEntryPoint.inf
+++
b/StandaloneMmPkg/Library/StandaloneMmCoreEntryPoint/StandaloneMm
CoreEntryPoint.inf
@@ -21,10 +21,10 @@
# VALID_ARCHITECTURES = IA32 X64 IPF EBC (EBC
is
for
build only)
#

-[Sources.AARCH64]
- AArch64/StandaloneMmCoreEntryPoint.c
- AArch64/SetPermissions.c
- AArch64/CreateHobList.c
+[Sources.AARCH64, Sources.ARM]
+ Arm/StandaloneMmCoreEntryPoint.c
+ Arm/SetPermissions.c
+ Arm/CreateHobList.c

[Sources.X64]
X64/StandaloneMmCoreEntryPoint.c
@@ -34,14 +34,14 @@
MdeModulePkg/MdeModulePkg.dec
StandaloneMmPkg/StandaloneMmPkg.dec

-[Packages.AARCH64]
+[Packages.ARM, Packages.AARCH64]
ArmPkg/ArmPkg.dec

[LibraryClasses]
BaseLib
DebugLib

-[LibraryClasses.AARCH64]
+[LibraryClasses.ARM, LibraryClasses.AARCH64]
StandaloneMmMmuLib
ArmSvcLib

@@ -51,7 +51,7 @@
gEfiStandaloneMmNonSecureBufferGuid
gEfiArmTfCpuDriverEpDescriptorGuid

-[FeaturePcd.AARCH64]
+[FeaturePcd.ARM, FeaturePcd.AARCH64]
gArmTokenSpaceGuid.PcdFfaEnable

[BuildOptions]
diff --git
a/StandaloneMmPkg/Library/StandaloneMmCoreHobLib/AArch64/Standalon
eMmCoreHobLib.c
b/StandaloneMmPkg/Library/StandaloneMmCoreHobLib/Arm/StandaloneM
mCoreHobLib.c
similarity index 100%
rename from
StandaloneMmPkg/Library/StandaloneMmCoreHobLib/AArch64/Standalone
MmCoreHobLib.c
rename to
StandaloneMmPkg/Library/StandaloneMmCoreHobLib/Arm/StandaloneMmC
oreHobLib.c
diff --git
a/StandaloneMmPkg/Library/StandaloneMmCoreHobLib/AArch64/Standalon
eMmCoreHobLibInternal.c
b/StandaloneMmPkg/Library/StandaloneMmCoreHobLib/Arm/StandaloneM
mCoreHobLibInternal.c
similarity index 100%
rename from
StandaloneMmPkg/Library/StandaloneMmCoreHobLib/AArch64/Standalone
MmCoreHobLibInternal.c
rename to
StandaloneMmPkg/Library/StandaloneMmCoreHobLib/Arm/StandaloneMmC
oreHobLibInternal.c
diff --git
a/StandaloneMmPkg/Library/StandaloneMmCoreHobLib/StandaloneMmCore
HobLib.inf
b/StandaloneMmPkg/Library/StandaloneMmCoreHobLib/StandaloneMmCore
HobLib.inf
index a2559920e8..34ed536480 100644
---
a/StandaloneMmPkg/Library/StandaloneMmCoreHobLib/StandaloneMmCore
HobLib.inf
+++
b/StandaloneMmPkg/Library/StandaloneMmCoreHobLib/StandaloneMmCore
HobLib.inf
@@ -22,7 +22,7 @@
LIBRARY_CLASS =
HobLib|MM_CORE_STANDALONE

#
-# VALID_ARCHITECTURES = X64 AARCH64
+# VALID_ARCHITECTURES = X64 AARCH64 ARM
#
[Sources.common]
Common.c
@@ -30,9 +30,9 @@
[Sources.X64]
X64/StandaloneMmCoreHobLib.c

-[Sources.AARCH64]
- AArch64/StandaloneMmCoreHobLib.c
- AArch64/StandaloneMmCoreHobLibInternal.c
+[Sources.AARCH64, Sources.ARM]
+ Arm/StandaloneMmCoreHobLib.c
+ Arm/StandaloneMmCoreHobLibInternal.c

[Packages]
MdePkg/MdePkg.dec
diff --git
a/StandaloneMmPkg/Library/StandaloneMmMemLib/AArch64/StandaloneM
mMemLibInternal.c
b/StandaloneMmPkg/Library/StandaloneMmMemLib/ArmStandaloneMmMe
mLibInternal.c
similarity index 86%
rename from
StandaloneMmPkg/Library/StandaloneMmMemLib/AArch64/StandaloneMm
MemLibInternal.c
rename to
StandaloneMmPkg/Library/StandaloneMmMemLib/ArmStandaloneMmMemL
ibInternal.c
index 4124959e04..fa7df46413 100644
---
a/StandaloneMmPkg/Library/StandaloneMmMemLib/AArch64/StandaloneM
mMemLibInternal.c
+++
b/StandaloneMmPkg/Library/StandaloneMmMemLib/ArmStandaloneMmMe
mLibInternal.c
@@ -20,6 +20,13 @@
//
extern EFI_PHYSICAL_ADDRESS
mMmMemLibInternalMaximumSupportAddress;

+#ifdef MDE_CPU_AARCH64
+#define ARM_PHYSICAL_ADDRESS_BITS 36
+#endif
+#ifdef MDE_CPU_ARM
+#define ARM_PHYSICAL_ADDRESS_BITS 32
+#endif
+
/**
Calculate and save the maximum support address.

@@ -31,7 +38,7 @@
MmMemLibInternalCalculateMaximumSupportAddress (
{
UINT8 PhysicalAddressBits;

- PhysicalAddressBits = 36;
+ PhysicalAddressBits = ARM_PHYSICAL_ADDRESS_BITS;

//
// Save the maximum support address in one global variable
diff --git
a/StandaloneMmPkg/Library/StandaloneMmMemLib/StandaloneMmMemLib
.inf
b/StandaloneMmPkg/Library/StandaloneMmMemLib/StandaloneMmMemLib
.inf
index 062b0d7a11..b29d97a746 100644
---
a/StandaloneMmPkg/Library/StandaloneMmMemLib/StandaloneMmMemLib
.inf
+++
b/StandaloneMmPkg/Library/StandaloneMmMemLib/StandaloneMmMemLib
.inf
@@ -28,7 +28,7 @@
#
# The following information is for reference only and not required
by
the
build tools.
#
-# VALID_ARCHITECTURES = IA32 X64 AARCH64
+# VALID_ARCHITECTURES = IA32 X64 AARCH64 ARM
#

[Sources.Common]
@@ -37,8 +37,8 @@
[Sources.IA32, Sources.X64]
X86StandaloneMmMemLibInternal.c

-[Sources.AARCH64]
- AArch64/StandaloneMmMemLibInternal.c
+[Sources.AARCH64, Sources.ARM]
+ ArmStandaloneMmMemLibInternal.c

[Packages]
MdePkg/MdePkg.dec
diff --git
a/StandaloneMmPkg/Library/VariableMmDependency/VariableMmDepende
ncy.inf
b/StandaloneMmPkg/Library/VariableMmDependency/VariableMmDepende
ncy.inf
index a2a059c5d6..ffb2a6d083 100644
---
a/StandaloneMmPkg/Library/VariableMmDependency/VariableMmDepende
ncy.inf
+++
b/StandaloneMmPkg/Library/VariableMmDependency/VariableMmDepende
ncy.inf
@@ -20,7 +20,7 @@
#
# The following information is for reference only and not required
by
the
build tools.
#
-# VALID_ARCHITECTURES = AARCH64
+# VALID_ARCHITECTURES = AARCH64|ARM
#
#

diff --git a/StandaloneMmPkg/StandaloneMmPkg.dsc
b/StandaloneMmPkg/StandaloneMmPkg.dsc
index 0c45df95e2..8012f93b7d 100644
--- a/StandaloneMmPkg/StandaloneMmPkg.dsc
+++ b/StandaloneMmPkg/StandaloneMmPkg.dsc
@@ -20,7 +20,7 @@
PLATFORM_VERSION = 1.0
DSC_SPECIFICATION = 0x00010011
OUTPUT_DIRECTORY = Build/StandaloneMm
- SUPPORTED_ARCHITECTURES = AARCH64|X64
+ SUPPORTED_ARCHITECTURES = AARCH64|X64|ARM
BUILD_TARGETS = DEBUG|RELEASE
SKUID_IDENTIFIER = DEFAULT

@@ -60,7 +60,7 @@
StandaloneMmDriverEntryPoint|MdePkg/Library/StandaloneMmDriverEntryP
oint/StandaloneMmDriverEntryPoint.inf
VariableMmDependency|StandaloneMmPkg/Library/VariableMmDependenc
y/VariableMmDependency.inf

-[LibraryClasses.AARCH64]
+[LibraryClasses.AARCH64, LibraryClasses.ARM]
ArmLib|ArmPkg/Library/ArmLib/ArmBaseLib.inf
StandaloneMmMmuLib|ArmPkg/Library/StandaloneMmMmuLib/ArmMmuSt
andaloneMmLib.inf
ArmSvcLib|ArmPkg/Library/ArmSvcLib/ArmSvcLib.inf
@@ -118,8 +118,8 @@
StandaloneMmPkg/Library/StandaloneMmMemoryAllocationLib/Standalone
MmMemoryAllocationLib.inf
StandaloneMmPkg/Library/VariableMmDependency/VariableMmDependenc
y.inf

-[Components.AARCH64]
-
StandaloneMmPkg/Drivers/StandaloneMmCpu/AArch64/StandaloneMmCpu.i
nf
+[Components.AARCH64, Components.ARM]
+
StandaloneMmPkg/Drivers/StandaloneMmCpu/StandaloneMmCpu.inf
StandaloneMmPkg/Library/StandaloneMmPeCoffExtraActionLib/Standalone
MmPeCoffExtraActionLib.inf

##############################################################
#####################################
@@ -135,6 +135,10 @@
GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
-march=armv8-a+nofp -mstrict-align
GCC:*_*_*_CC_FLAGS = -mstrict-align

+[BuildOptions.ARM]
+GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
-march=armv7-a
+GCC:*_*_*_CC_FLAGS = -fno-stack-protector
+
[BuildOptions.X64]
MSFT:*_*_*_DLINK_FLAGS = /ALIGN:4096
GCC:*_GCC*_*_DLINK_FLAGS = -z common-page-size=0x1000