From patchwork Wed Aug 10 15:18:02 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ard Biesheuvel X-Patchwork-Id: 73674 Delivered-To: patch@linaro.org Received: by 10.140.29.52 with SMTP id a49csp456413qga; Wed, 10 Aug 2016 08:19:32 -0700 (PDT) X-Received: by 10.98.94.6 with SMTP id s6mr8131180pfb.31.1470842372637; Wed, 10 Aug 2016 08:19:32 -0700 (PDT) Return-Path: Received: from ml01.01.org (ml01.01.org. [2001:19d0:306:5::1]) by mx.google.com with ESMTPS id wf7si8287684pac.96.2016.08.10.08.19.32 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 10 Aug 2016 08:19:32 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) client-ip=2001:19d0:306:5::1; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 136111A1E66; Wed, 10 Aug 2016 08:19:17 -0700 (PDT) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received: from mail-wm0-x22b.google.com (mail-wm0-x22b.google.com [IPv6:2a00:1450:400c:c09::22b]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id D26351A1E66 for ; Wed, 10 Aug 2016 08:19:15 -0700 (PDT) Received: by mail-wm0-x22b.google.com with SMTP id o80so111046895wme.1 for ; Wed, 10 Aug 2016 08:19:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=5fDJ68qO+wES2OjU3POzXUCD3q3+RPLWG73S6nPA3HA=; b=Gdt9pNjmpIN2W4JjzYU+ee2RHvSXMRRn8E3q+SxmNBuLFQwvpPd8esrV2x84vJKF5/ R277M4gllPJdycfvjkokGAOGQAwcDqwRU4s/DNqhPt/g7/hVwUezov3RDw2+F08kyPxd j1AyOSqE6HpQsEKLfHihsP1TCtho80WZajAT8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=5fDJ68qO+wES2OjU3POzXUCD3q3+RPLWG73S6nPA3HA=; b=IU/ixk5BevmvosRmM3ACeC0QZn5aQqTpp5W0xfZRSxxYOxshwYXZIc9sk5A3MvfvcX GmI35Rb09h54WgveBl6Nyx8YprcetngKSO81+qR4cK+bB63agxy7FQ3S+vB3DK9bX0BW oK7jxMttnJeY6UYRzks8m6/82HMdJh5fZqdAv7ELRM2/CnfyHn+weRWGWAwl7wC59yHg qYdPY7vWT68AFXnh5/BUySd8Vcs1tT826eHcKts5Ntw+1AcLBAgGqK/PtuoSEWp1+yHW b0QojP0JvZ9NGv+Qo+KX48wAFAxqRiFCW4zI/ybdxS36a6dIR2T5/gOLQtMY89ezCbHd mrDA== X-Gm-Message-State: AEkoousDDk4h3ECzLtlJNHEO73c1InVQrnPI71msLXomQ8/4GWRKyJ26fCa/+L3v65RJ5ym5 X-Received: by 10.28.36.10 with SMTP id k10mr3649637wmk.33.1470842354096; Wed, 10 Aug 2016 08:19:14 -0700 (PDT) Received: from localhost.localdomain (46.red-81-37-107.dynamicip.rima-tde.net. [81.37.107.46]) by smtp.gmail.com with ESMTPSA id c16sm8908374wme.4.2016.08.10.08.19.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 10 Aug 2016 08:19:13 -0700 (PDT) From: Ard Biesheuvel To: edk2-devel@lists.01.org, leif.lindholm@linaro.org, eugene@hp.com Date: Wed, 10 Aug 2016 17:18:02 +0200 Message-Id: <1470842282-8415-27-git-send-email-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1470842282-8415-1-git-send-email-ard.biesheuvel@linaro.org> References: <1470842282-8415-1-git-send-email-ard.biesheuvel@linaro.org> Subject: [edk2] [PATCH 26/26] ArmPlatformPkg/ArmPlatformStackLib: switch to ASM_FUNC() asm macro X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: lersek@redhat.com, Ard Biesheuvel MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" Annotate functions with ASM_FUNC() so that they are emitted into separate sections. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel --- ArmPlatformPkg/Library/ArmPlatformStackLib/AArch64/ArmPlatformStackLib.S | 35 +++++--------------- ArmPlatformPkg/Library/ArmPlatformStackLib/Arm/ArmPlatformStackLib.S | 25 +++----------- 2 files changed, 12 insertions(+), 48 deletions(-) -- 2.7.4 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel Reviewed-by: Leif Lindholm diff --git a/ArmPlatformPkg/Library/ArmPlatformStackLib/AArch64/ArmPlatformStackLib.S b/ArmPlatformPkg/Library/ArmPlatformStackLib/AArch64/ArmPlatformStackLib.S index 485017f62013..65d7d6c6d686 100644 --- a/ArmPlatformPkg/Library/ArmPlatformStackLib/AArch64/ArmPlatformStackLib.S +++ b/ArmPlatformPkg/Library/ArmPlatformStackLib/AArch64/ArmPlatformStackLib.S @@ -12,21 +12,6 @@ // #include -#include -#include - -.text -.align 3 - -GCC_ASM_EXPORT(ArmPlatformStackSet) -GCC_ASM_EXPORT(ArmPlatformStackSetPrimary) -GCC_ASM_EXPORT(ArmPlatformStackSetSecondary) - -GCC_ASM_IMPORT(ArmPlatformIsPrimaryCore) -GCC_ASM_IMPORT(ArmPlatformGetCorePosition) -GCC_ASM_IMPORT(ArmPlatformGetPrimaryCoreMpId) - -GCC_ASM_IMPORT(gPcd_FixedAtBuild_PcdCoreCount) //VOID //ArmPlatformStackSet ( @@ -35,7 +20,7 @@ GCC_ASM_IMPORT(gPcd_FixedAtBuild_PcdCoreCount) // IN UINTN PrimaryStackSize, // IN UINTN SecondaryStackSize // ); -ASM_PFX(ArmPlatformStackSet): +ASM_FUNC(ArmPlatformStackSet) // Save parameters mov x6, x3 mov x5, x2 @@ -59,10 +44,10 @@ ASM_PFX(ArmPlatformStackSet): // Restore the Link register mov x30, x7 - // Should be ASM_PFX(ArmPlatformStackSetPrimary) but generate linker error 'unsupported ELF EM_AARCH64' - b.eq ArmPlatformStackSetPrimaryL - // Should be ASM_PFX(ArmPlatformStackSetSecondary) but generate linker error 'unsupported ELF EM_AARCH64' - b.ne ArmPlatformStackSetSecondaryL + b.ne 0f + + b ASM_PFX(ArmPlatformStackSetPrimary) +0:b ASM_PFX(ArmPlatformStackSetSecondary) //VOID //ArmPlatformStackSetPrimary ( @@ -71,8 +56,7 @@ ASM_PFX(ArmPlatformStackSet): // IN UINTN PrimaryStackSize, // IN UINTN SecondaryStackSize // ); -ArmPlatformStackSetPrimaryL: -ASM_PFX(ArmPlatformStackSetPrimary): +ASM_FUNC(ArmPlatformStackSetPrimary) // Save the Link register mov x4, x30 @@ -80,9 +64,7 @@ ASM_PFX(ArmPlatformStackSetPrimary): add x0, x0, x2 // Compute SecondaryCoresCount * SecondaryCoreStackSize - LoadConstantToReg (_gPcd_FixedAtBuild_PcdCoreCount, x1) - ldr w1, [x1] - sub x1, x1, #1 + MOV32 (w1, FixedPcdGet32(PcdCoreCount) - 1) mul x3, x3, x1 // Set Primary Stack ((StackBase + PrimaryStackSize) + (SecondaryCoresCount * SecondaryCoreStackSize)) @@ -97,8 +79,7 @@ ASM_PFX(ArmPlatformStackSetPrimary): // IN UINTN PrimaryStackSize, // IN UINTN SecondaryStackSize // ); -ArmPlatformStackSetSecondaryL: -ASM_PFX(ArmPlatformStackSetSecondary): +ASM_FUNC(ArmPlatformStackSetSecondary) // Save the Link register mov x4, x30 mov sp, x0 diff --git a/ArmPlatformPkg/Library/ArmPlatformStackLib/Arm/ArmPlatformStackLib.S b/ArmPlatformPkg/Library/ArmPlatformStackLib/Arm/ArmPlatformStackLib.S index 96e925981fca..bdd7a27b7cf9 100644 --- a/ArmPlatformPkg/Library/ArmPlatformStackLib/Arm/ArmPlatformStackLib.S +++ b/ArmPlatformPkg/Library/ArmPlatformStackLib/Arm/ArmPlatformStackLib.S @@ -12,21 +12,6 @@ // #include -#include -#include - -.text -.align 3 - -GCC_ASM_EXPORT(ArmPlatformStackSet) -GCC_ASM_EXPORT(ArmPlatformStackSetPrimary) -GCC_ASM_EXPORT(ArmPlatformStackSetSecondary) - -GCC_ASM_IMPORT(ArmPlatformIsPrimaryCore) -GCC_ASM_IMPORT(ArmPlatformGetCorePosition) -GCC_ASM_IMPORT(ArmPlatformGetPrimaryCoreMpId) - -GCC_ASM_IMPORT(gPcd_FixedAtBuild_PcdCoreCount) //VOID //ArmPlatformStackSet ( @@ -35,7 +20,7 @@ GCC_ASM_IMPORT(gPcd_FixedAtBuild_PcdCoreCount) // IN UINTN PrimaryStackSize, // IN UINTN SecondaryStackSize // ); -ASM_PFX(ArmPlatformStackSet): +ASM_FUNC(ArmPlatformStackSet) // Save parameters mov r6, r3 mov r5, r2 @@ -69,16 +54,14 @@ ASM_PFX(ArmPlatformStackSet): // IN UINTN PrimaryStackSize, // IN UINTN SecondaryStackSize // ); -ASM_PFX(ArmPlatformStackSetPrimary): +ASM_FUNC(ArmPlatformStackSetPrimary) mov r4, lr // Add stack of primary stack to StackBase add r0, r0, r2 // Compute SecondaryCoresCount * SecondaryCoreStackSize - LoadConstantToReg (_gPcd_FixedAtBuild_PcdCoreCount, r1) - ldr r1, [r1] - sub r1, #1 + MOV32 (r1, FixedPcdGet32(PcdCoreCount) - 1) mul r3, r3, r1 // Set Primary Stack ((StackBase + PrimaryStackSize) + (SecondaryCoresCount * SecondaryCoreStackSize)) @@ -93,7 +76,7 @@ ASM_PFX(ArmPlatformStackSetPrimary): // IN UINTN PrimaryStackSize, // IN UINTN SecondaryStackSize // ); -ASM_PFX(ArmPlatformStackSetSecondary): +ASM_FUNC(ArmPlatformStackSetSecondary) mov r4, lr mov sp, r0