From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
To: edk2-devel@lists.01.org, leif.lindholm@linaro.org
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Subject: [PATCH 4/6] Platforms/Styx: switch to ASM_FUNC() asm macro
Date: Thu, 11 Aug 2016 12:08:19 +0200 [thread overview]
Message-ID: <1470910101-20322-5-git-send-email-ard.biesheuvel@linaro.org> (raw)
In-Reply-To: <1470910101-20322-1-git-send-email-ard.biesheuvel@linaro.org>
Annotate functions with ASM_FUNC() so that they are emitted into
separate sections.
While we're at it, clean up some inefficient uses of LoadConstantToReg()
and other indirect absolute references (which require runtime relocation).
Since this requires fixed PCDs to be declared as such in the module .inf,
update those as well.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
---
Platforms/AMD/Styx/Library/AmdStyxLib/AArch64/Helper.S | 58 ++++++--------------
Platforms/AMD/Styx/Library/AmdStyxLib/AmdStyxLib.inf | 7 ++-
Platforms/AMD/Styx/Library/AmdStyxLib/AmdStyxLibSec.inf | 1 +
3 files changed, 21 insertions(+), 45 deletions(-)
diff --git a/Platforms/AMD/Styx/Library/AmdStyxLib/AArch64/Helper.S b/Platforms/AMD/Styx/Library/AmdStyxLib/AArch64/Helper.S
index 0f9822a86989..a3ac60282706 100644
--- a/Platforms/AMD/Styx/Library/AmdStyxLib/AArch64/Helper.S
+++ b/Platforms/AMD/Styx/Library/AmdStyxLib/AArch64/Helper.S
@@ -17,25 +17,8 @@
# ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/RTSMHelper.S
#
#**/
-
#include <AsmMacroIoLibV8.h>
-#include <Base.h>
#include <Library/ArmLib.h>
-#include <Library/PcdLib.h>
-#include <AutoGen.h>
-
-.text
-.align 2
-
-GCC_ASM_EXPORT(ArmPlatformPeiBootAction)
-GCC_ASM_EXPORT(ArmPlatformIsPrimaryCore)
-GCC_ASM_EXPORT(ArmPlatformGetPrimaryCoreMpId)
-GCC_ASM_EXPORT(ArmPlatformGetCorePosition)
-GCC_ASM_EXPORT(ArmGetCpuCountPerCluster)
-
-GCC_ASM_IMPORT(_gPcd_FixedAtBuild_PcdArmPrimaryCore)
-GCC_ASM_IMPORT(_gPcd_FixedAtBuild_PcdArmPrimaryCoreMask)
-GCC_ASM_IMPORT(_gPcd_FixedAtBuild_PcdCoreCount)
PrimaryCoreMpid: .word 0x0
PrimaryCoreBoot: .word 0x0
@@ -44,18 +27,15 @@ PrimaryCoreBoot: .word 0x0
//ArmPlatformPeiBootAction (
// VOID
// );
-ASM_PFX(ArmPlatformPeiBootAction):
+ASM_FUNC(ArmPlatformPeiBootAction)
+ ldr w0, PrimaryCoreBoot
+ cbnz w0, 1f
+
// Save the primary CPU MPID
- ldr x1, =PrimaryCoreBoot
- ldrh w0, [x1]
- cmp wzr, w0
- b.ne 1f
mrs x0, mpidr_el1
- ldr x1, =PrimaryCoreMpid
- str w0, [x1]
- mov w0, 1
- ldr x1, =PrimaryCoreBoot
- str w0, [x1]
+ adr x2, PrimaryCoreMpid
+ mov w1, #1
+ stp w0, w1, [x2]
1:
ret
@@ -63,34 +43,28 @@ ASM_PFX(ArmPlatformPeiBootAction):
//ArmPlatformGetPrimaryCoreMpId (
// VOID
// );
-ASM_PFX(ArmPlatformGetPrimaryCoreMpId):
- ldr x0, =PrimaryCoreMpid
- ldrh w0, [x0]
+ASM_FUNC(ArmPlatformGetPrimaryCoreMpId)
+ ldr w0, PrimaryCoreMpid
ret
# IN None
# OUT x0 = number of cores present in the system
-ASM_PFX(ArmGetCpuCountPerCluster):
- LoadConstantToReg (_gPcd_FixedAtBuild_PcdCoreCount, x0)
- ldrh w0, [x0]
+ASM_FUNC(ArmGetCpuCountPerCluster)
+ MOV32 (w0, FixedPcdGet32 (PcdCoreCount))
ret
//UINTN
//ArmPlatformIsPrimaryCore (
// IN UINTN MpId
// );
-ASM_PFX(ArmPlatformIsPrimaryCore):
- LoadConstantToReg (_gPcd_FixedAtBuild_PcdArmPrimaryCoreMask, x1)
- ldrh w1, [x1]
+ASM_FUNC(ArmPlatformIsPrimaryCore)
+ MOV32 (w1, FixedPcdGet32 (PcdArmPrimaryCoreMask))
and x0, x0, x1
- ldr x1, =PrimaryCoreMpid
- ldrh w1, [x1]
+ ldr w1, PrimaryCoreMpid
cmp w0, w1
- mov x0, #1
- mov x1, #0
- csel x0, x0, x1, eq
+ cset x0, eq
ret
//UINTN
@@ -98,7 +72,7 @@ ASM_PFX(ArmPlatformIsPrimaryCore):
// IN UINTN MpId
// );
// With this function: CorePos = (ClusterId * 2) + CoreId
-ASM_PFX(ArmPlatformGetCorePosition):
+ASM_FUNC(ArmPlatformGetCorePosition)
and x1, x0, #ARM_CORE_MASK
and x0, x0, #ARM_CLUSTER_MASK
add x0, x1, x0, LSR #7
diff --git a/Platforms/AMD/Styx/Library/AmdStyxLib/AmdStyxLib.inf b/Platforms/AMD/Styx/Library/AmdStyxLib/AmdStyxLib.inf
index c6e42e4482fe..4a6469ee016c 100644
--- a/Platforms/AMD/Styx/Library/AmdStyxLib/AmdStyxLib.inf
+++ b/Platforms/AMD/Styx/Library/AmdStyxLib/AmdStyxLib.inf
@@ -63,14 +63,15 @@
gArmTokenSpaceGuid.PcdFvBaseAddress
gArmTokenSpaceGuid.PcdFdBaseAddress
+ gAmdStyxTokenSpaceGuid.PcdTrustedFWMemoryBase
+ gAmdStyxTokenSpaceGuid.PcdTrustedFWMemorySize
+
+[FixedPcd]
gArmTokenSpaceGuid.PcdArmPrimaryCoreMask
gArmTokenSpaceGuid.PcdArmPrimaryCore
gArmPlatformTokenSpaceGuid.PcdCoreCount
gArmPlatformTokenSpaceGuid.PcdCPUCoresStackBase
- gAmdStyxTokenSpaceGuid.PcdTrustedFWMemoryBase
- gAmdStyxTokenSpaceGuid.PcdTrustedFWMemorySize
-
[Depex]
gAmdStyxPlatInitPpiGuid
diff --git a/Platforms/AMD/Styx/Library/AmdStyxLib/AmdStyxLibSec.inf b/Platforms/AMD/Styx/Library/AmdStyxLib/AmdStyxLibSec.inf
index fefd3ee6999b..0b9b6287168d 100644
--- a/Platforms/AMD/Styx/Library/AmdStyxLib/AmdStyxLibSec.inf
+++ b/Platforms/AMD/Styx/Library/AmdStyxLib/AmdStyxLibSec.inf
@@ -61,6 +61,7 @@
gArmTokenSpaceGuid.PcdSystemMemorySize
gArmTokenSpaceGuid.PcdFvBaseAddress
+[FixedPcd]
gArmTokenSpaceGuid.PcdArmPrimaryCoreMask
gArmTokenSpaceGuid.PcdArmPrimaryCore
--
2.7.4
next prev parent reply other threads:[~2016-08-11 10:09 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-11 10:08 [PATCH 0/6] Move to ASM_FUNC() macro, and clean up some asm as well Ard Biesheuvel
2016-08-11 10:08 ` [PATCH 1/6] Platforms/BeagleBoard: remove unreferenced Sec.inf module Ard Biesheuvel
2016-08-11 10:08 ` [PATCH 2/6] Platforms/BeagleBoard/BeagleBoardLib: switch to ASM_FUNC() asm macro Ard Biesheuvel
2016-08-11 10:08 ` [PATCH 3/6] Platforms/Styx: remove unused AmdStyxSecLib Ard Biesheuvel
2016-08-11 10:08 ` Ard Biesheuvel [this message]
2016-08-11 10:08 ` [PATCH 5/6] Platforms/Hisilicon/ArmPlatformLibPv660: switch to ASM_FUNC() asm macro Ard Biesheuvel
2016-08-11 10:08 ` [PATCH 6/6] Platforms/Marvell/Armada70x0Lib: " Ard Biesheuvel
2016-08-11 10:25 ` [PATCH 0/6] Move to ASM_FUNC() macro, and clean up some asm as well Leif Lindholm
2016-08-11 11:51 ` Ard Biesheuvel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1470910101-20322-5-git-send-email-ard.biesheuvel@linaro.org \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox