回复: [edk2-devel] [PATCH v4 5/5] StandaloneMmPkg: build for 32bit arm machines


gaoliming
 

Etienne:

I check the build log. Two build failure here. Can you update the patch to fix them?

1. Two modules are only for AARCH64. They should be specified in [Components.AARCH64] in ArmPkg\ArmPkg.dsc
ArmPkg/Drivers/MmCommunicationDxe/MmCommunication.inf
ArmPkg/Library/ArmMmuLib/ArmMmuPeiLib.inf

2. StandaloneMmCoreEntryPoint library class header file is changed. It should also be updated in StandaloneMmPkg\StandaloneMmPkg.dec

ERROR - Library StandaloneMmCoreEntryPoint with path Include/Library/AArch64/StandaloneMmCoreEntryPoint.h not found in package filesystem
ERROR - Library Header File Include/Library/Arm/StandaloneMmCoreEntryPoint.h not declared in package DEC StandaloneMmPkg/StandaloneMmPkg.dec

Thanks
Liming

-----邮件原件-----
发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Ard
Biesheuvel
发送时间: 2021年7月28日 14:52
收件人: Sami Mujawar <Sami.Mujawar@arm.com>
抄送: gaoliming <gaoliming@byosoft.com.cn>; devel@edk2.groups.io;
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 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