From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-it0-x229.google.com (mail-it0-x229.google.com [IPv6:2607:f8b0:4001:c0b::229]) (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 AA8EA1A1E29 for ; Wed, 10 Aug 2016 10:31:15 -0700 (PDT) Received: by mail-it0-x229.google.com with SMTP id x130so44290431ite.1 for ; Wed, 10 Aug 2016 10:31:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=kzQARuMi9EJmf+u7WkgZfEd69djbym800dx6fh+UxjY=; b=Z6EaBHWdgCa30IgMPGEHljbgEWSuYK9VmM446AFPqBE+od+4L464ecnIu6ULa34zTe gLoADv9id4PQP+/pwwfspanmyTzFSfvqvc3LZ0UsCoAPNe0O9b1g0pKAH3RMLYV8ebiZ F1Cy/Ni2B6zj513zRyOdeYtuIeQDxdfgLDd2U= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=kzQARuMi9EJmf+u7WkgZfEd69djbym800dx6fh+UxjY=; b=GsX7C/HadQsvkQojRtrP3oZzAEzsijtji7AC04CpmiI0pp40T/So24XKWsPyn4wOX+ g2dABYL7FtlZB3u9V/fVssZ+CBhWXQai6OFUvHPk61lVZ/6+XhAwd5niNkt+wABP+6nc sAPHQBOidgi1XUFl1p7z+ynYVCONH132urhs1Iz9020PLjksx69QuKjVr66e6vj0KGpz 36B/gi5A0uKADEzHN8oRvKijrYlONgfhaq+f0Rhk89+eDR6Dcgt9tLvMpvKj7TMS+K99 oL5KLKcKgkxgbfrvAWseROxx7q/R5U3QyHfBKBjt/81kaEn+Gu2Sc5dpqPQlNsAekecn moKA== X-Gm-Message-State: AEkooutggBAAlSGH94kzRTLMEcHAL/vV5KtZXus3jYWYqKLTN3leirteIbm7AlIGuZANMLrXG8UAerteLpUa6ca+ X-Received: by 10.36.25.144 with SMTP id b138mr4694335itb.29.1470850275034; Wed, 10 Aug 2016 10:31:15 -0700 (PDT) MIME-Version: 1.0 Received: by 10.36.204.195 with HTTP; Wed, 10 Aug 2016 10:31:14 -0700 (PDT) In-Reply-To: <20160810165644.GK31760@bivouac.eciton.net> References: <1470842282-8415-1-git-send-email-ard.biesheuvel@linaro.org> <1470842282-8415-2-git-send-email-ard.biesheuvel@linaro.org> <20160810165644.GK31760@bivouac.eciton.net> From: Ard Biesheuvel Date: Wed, 10 Aug 2016 19:31:14 +0200 Message-ID: To: Leif Lindholm Cc: edk2-devel-01 , "Cohen, Eugene" , Laszlo Ersek Subject: Re: [PATCH 01/26] ArmLib: remove ArmReplaceLiveTranslationEntry() implementation 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: , X-List-Received-Date: Wed, 10 Aug 2016 17:31:15 -0000 Content-Type: text/plain; charset=UTF-8 On 10 August 2016 at 18:56, Leif Lindholm wrote: > On Wed, Aug 10, 2016 at 05:17:37PM +0200, Ard Biesheuvel wrote: >> The function ArmReplaceLiveTranslationEntry() has been moved to >> ArmMmuLib, so remove the old implementation from ArmLib. > > Could you add a statement to this commit message that you're also > fixing up the export attributes for the ArmMmuLib version to prepare > for the new macros? > Actually, it is not quite that. The ArmMmuLib implementation was never actually accessible, so the ArmLib version was still being used. That is why it needs to be fixed in the same patch, or we'll end up with either two or no implementations, causing breakage. I will add some more explanation to the commit log > If you do: > Reviewed-by: Leif Lindholm > >> Contributed-under: TianoCore Contribution Agreement 1.0 >> Signed-off-by: Ard Biesheuvel >> --- >> ArmPkg/Library/ArmLib/AArch64/AArch64Support.S | 60 -------------------- >> ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibReplaceEntry.S | 4 ++ >> 2 files changed, 4 insertions(+), 60 deletions(-) >> >> diff --git a/ArmPkg/Library/ArmLib/AArch64/AArch64Support.S b/ArmPkg/Library/ArmLib/AArch64/AArch64Support.S >> index 9441f47e30ba..5cef98fd42a0 100644 >> --- a/ArmPkg/Library/ArmLib/AArch64/AArch64Support.S >> +++ b/ArmPkg/Library/ArmLib/AArch64/AArch64Support.S >> @@ -488,64 +488,4 @@ ASM_PFX(ArmReadCurrentEL): >> mrs x0, CurrentEL >> ret >> >> - >> - .macro __replace_entry, el >> - >> - // disable the MMU >> - mrs x8, sctlr_el\el >> - bic x9, x8, #CTRL_M_BIT >> - msr sctlr_el\el, x9 >> - isb >> - >> - // write updated entry >> - str x1, [x0] >> - >> - // invalidate again to get rid of stale clean cachelines that may >> - // have been filled speculatively since the last invalidate >> - dmb sy >> - dc ivac, x0 >> - >> - // flush the TLBs >> - .if \el == 1 >> - tlbi vmalle1 >> - .else >> - tlbi alle\el >> - .endif >> - dsb sy >> - >> - // re-enable the MMU >> - msr sctlr_el\el, x8 >> - isb >> - .endm >> - >> -//VOID >> -//ArmReplaceLiveTranslationEntry ( >> -// IN UINT64 *Entry, >> -// IN UINT64 Value >> -// ) >> -ASM_PFX(ArmReplaceLiveTranslationEntry): >> - >> - // disable interrupts >> - mrs x2, daif >> - msr daifset, #0xf >> - isb >> - >> - // clean and invalidate first so that we don't clobber >> - // adjacent entries that are dirty in the caches >> - dc civac, x0 >> - dsb ish >> - >> - EL1_OR_EL2_OR_EL3(x3) >> -1:__replace_entry 1 >> - b 4f >> -2:__replace_entry 2 >> - b 4f >> -3:__replace_entry 3 >> - >> -4:msr daif, x2 >> - ret >> - >> -ASM_PFX(ArmReplaceLiveTranslationEntrySize): >> - .long . - ArmReplaceLiveTranslationEntry >> - >> ASM_FUNCTION_REMOVE_IF_UNREFERENCED >> diff --git a/ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibReplaceEntry.S b/ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibReplaceEntry.S >> index 7c5d205d940b..3834da7bfedd 100644 >> --- a/ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibReplaceEntry.S >> +++ b/ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibReplaceEntry.S >> @@ -14,6 +14,8 @@ >> >> #include >> >> +GCC_ASM_EXPORT(ArmReplaceLiveTranslationEntry) >> + >> .set CTRL_M_BIT, (1 << 0) >> >> .macro __replace_entry, el >> @@ -72,5 +74,7 @@ ASM_PFX(ArmReplaceLiveTranslationEntry): >> 4:msr daif, x2 >> ret >> >> +ASM_GLOBAL ASM_PFX(ArmReplaceLiveTranslationEntrySize) >> + >> ASM_PFX(ArmReplaceLiveTranslationEntrySize): >> .long . - ArmReplaceLiveTranslationEntry >> -- >> 2.7.4 >>