From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-x236.google.com (mail-wm0-x236.google.com [IPv6:2a00:1450:400c:c09::236]) (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 F09211A1E2B for ; Wed, 10 Aug 2016 10:04:28 -0700 (PDT) Received: by mail-wm0-x236.google.com with SMTP id q128so106105295wma.1 for ; Wed, 10 Aug 2016 10:04:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=+CA7WuxotA1AJLmnpWUTO5QhnPsgFrDl9K5oRwE44S8=; b=EWC/Lo3OVJsdBPw4jX4yX3ZUY5b8qHywKH9BVXfkeptexhQ+7djCOQa4KwHor8u0FM /Tg7BdSzrJC9pYD7Dv/ifRL/4YttM4RbSLp1EQDdUCfdCn/ygfmUMRgxs1Ky9wdrOZV4 ycvYK9m4y3ZtwiQWxHYiZk2OjtMce2m4QnVbk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=+CA7WuxotA1AJLmnpWUTO5QhnPsgFrDl9K5oRwE44S8=; b=BieusOVTwHgOpdDkMoqaUq/aM/B6ssRCQZtmfmrEYybgN2vnPM9H1xFmRG+7HJ4HKA 0uyoIas0KRAR84JXHBSTdV2Ny/pYDpboe5CqK7iglAagWSjBqpAizznP6DszK149xAKs rgQaRTtMX62/iqGNYBJej3Kw+IlmwUFq50zcjrn3o3cbpZU+IL/jJYMb5kcA0iOuFZ+L kEbhtfKEjX0Fvav15cHjXwHnTz1ke7TMnQ34o29Ma/UKG0dEmgRqBGuO/d6md95Q8Thj x5DI3SIhpdsAJvnnzGaUJQ74oj7xK5uSvRxxVzZiBKZp44NF7wsgcKe11TmIfSIsaxMy Vv6A== X-Gm-Message-State: AEkoouu9dHEvN0oWojYTT8lW3P2emT50ibZn7KHD+6+3x+OUPCLBiDpRxrl14Pq+DJUCGUZu X-Received: by 10.194.29.2 with SMTP id f2mr4921856wjh.161.1470848667471; Wed, 10 Aug 2016 10:04:27 -0700 (PDT) Received: from bivouac.eciton.net (bivouac.eciton.net. [2a00:1098:0:86:1000:23:0:2]) by smtp.gmail.com with ESMTPSA id d80sm9283797wmd.14.2016.08.10.10.04.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 10 Aug 2016 10:04:26 -0700 (PDT) Date: Wed, 10 Aug 2016 18:04:24 +0100 From: Leif Lindholm To: Ard Biesheuvel Cc: edk2-devel@lists.01.org, eugene@hp.com, lersek@redhat.com Message-ID: <20160810170424.GL31760@bivouac.eciton.net> References: <1470842282-8415-1-git-send-email-ard.biesheuvel@linaro.org> <1470842282-8415-4-git-send-email-ard.biesheuvel@linaro.org> MIME-Version: 1.0 In-Reply-To: <1470842282-8415-4-git-send-email-ard.biesheuvel@linaro.org> User-Agent: Mutt/1.5.23 (2014-03-12) Subject: Re: [PATCH 03/26] ArmPkg/AsmMacroIoLib: remove unused obsolete MMIO and other asm macros 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:04:29 -0000 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Wed, Aug 10, 2016 at 05:17:39PM +0200, Ard Biesheuvel wrote: > This removes the various Mmio ASM macros that are not used anywhere in > the code, and removes some variants of LoadConstant... () that are not > used anywhere either. If you say something about how the Mmio* functions are redundant due to the MdePkg implementations: Reviewed-by: Leif Lindholm > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Ard Biesheuvel > --- > ArmPkg/Include/AsmMacroIoLib.h | 213 -------------------- > ArmPkg/Include/AsmMacroIoLib.inc | 54 ----- > 2 files changed, 267 deletions(-) > > diff --git a/ArmPkg/Include/AsmMacroIoLib.h b/ArmPkg/Include/AsmMacroIoLib.h > index f94dcc619f7a..551b87803d19 100644 > --- a/ArmPkg/Include/AsmMacroIoLib.h > +++ b/ArmPkg/Include/AsmMacroIoLib.h > @@ -24,88 +24,6 @@ > // ldr reg, =expr does not work with current Apple tool chain. So do the work our selves > // > > -// returns _Data in R0 and _Address in R1 > -#define MmioWrite32(_Address, _Data) \ > - ldr r1, [pc, #8] ; \ > - ldr r0, [pc, #8] ; \ > - str r0, [r1] ; \ > - b 1f ; \ > - .long (_Address) ; \ > - .long (_Data) ; \ > -1: > - > -// returns _Data in R0 and _Address in R1, and _OrData in r2 > -#define MmioOr32(_Address, _OrData) \ > - ldr r1, [pc, #16] ; \ > - ldr r2, [pc, #16] ; \ > - ldr r0, [r1] ; \ > - orr r0, r0, r2 ; \ > - str r0, [r1] ; \ > - b 1f ; \ > - .long (_Address) ; \ > - .long (_OrData) ; \ > -1: > - > -// returns _Data in R0 and _Address in R1, and _OrData in r2 > -#define MmioAnd32(_Address, _AndData) \ > - ldr r1, [pc, #16] ; \ > - ldr r2, [pc, #16] ; \ > - ldr r0, [r1] ; \ > - and r0, r0, r2 ; \ > - str r0, [r1] ; \ > - b 1f ; \ > - .long (_Address) ; \ > - .long (_AndData) ; \ > -1: > - > -// returns result in R0, _Address in R1, and _OrData in r2 > -#define MmioAndThenOr32(_Address, _AndData, _OrData) \ > - ldr r1, [pc, #24] ; \ > - ldr r0, [r1] ; \ > - ldr r2, [pc, #20] ; \ > - and r0, r0, r2 ; \ > - ldr r2, [pc, #16] ; \ > - orr r0, r0, r2 ; \ > - str r0, [r1] ; \ > - b 1f ; \ > - .long (_Address) ; \ > - .long (_AndData) ; \ > - .long (_OrData) ; \ > -1: > - > -// returns _Data in _Reg and _Address in R1 > -#define MmioWriteFromReg32(_Address, _Reg) \ > - ldr r1, [pc, #4] ; \ > - str _Reg, [r1] ; \ > - b 1f ; \ > - .long (_Address) ; \ > -1: > - > - > -// returns _Data in R0 and _Address in R1 > -#define MmioRead32(_Address) \ > - ldr r1, [pc, #4] ; \ > - ldr r0, [r1] ; \ > - b 1f ; \ > - .long (_Address) ; \ > -1: > - > -// returns _Data in Reg and _Address in R1 > -#define MmioReadToReg32(_Address, _Reg) \ > - ldr r1, [pc, #4] ; \ > - ldr _Reg, [r1] ; \ > - b 1f ; \ > - .long (_Address) ; \ > -1: > - > - > -// load R0 with _Data > -#define LoadConstant(_Data) \ > - ldr r0, [pc, #0] ; \ > - b 1f ; \ > - .long (_Data) ; \ > -1: > - > // load _Reg with _Data > #define LoadConstantToReg(_Data, _Reg) \ > ldr _Reg, [pc, #0] ; \ > @@ -113,91 +31,8 @@ > .long (_Data) ; \ > 1: > > -// load _Reg with _Data if eq > -#define LoadConstantToRegIfEq(_Data, _Reg) \ > - ldreq _Reg, [pc, #0] ; \ > - b 1f ; \ > - .long (_Data) ; \ > -1: > - > -// Reserve a region at the top of the Primary Core stack > -// for Global variables for the XIP phase > -#define SetPrimaryStack(StackTop, GlobalSize, Tmp) \ > - and Tmp, GlobalSize, #7 ; \ > - rsbne Tmp, Tmp, #8 ; \ > - add GlobalSize, GlobalSize, Tmp ; \ > - sub sp, StackTop, GlobalSize ; \ > - ; \ > - mov Tmp, sp ; \ > - mov GlobalSize, #0x0 ; \ > -_SetPrimaryStackInitGlobals: ; \ > - cmp Tmp, StackTop ; \ > - beq _SetPrimaryStackEnd ; \ > - str GlobalSize, [Tmp], #4 ; \ > - b _SetPrimaryStackInitGlobals ; \ > -_SetPrimaryStackEnd: > - > -// Initialize the Global Variable with '0' > -#define InitializePrimaryStack(GlobalSize, Tmp1) \ > - and Tmp1, GlobalSize, #7 ; \ > - rsbne Tmp1, Tmp1, #8 ; \ > - add GlobalSize, GlobalSize, Tmp1 ; \ > - ; \ > - mov Tmp1, sp ; \ > - sub sp, GlobalSize ; \ > - mov GlobalSize, #0x0 ; \ > -_InitializePrimaryStackLoop: ; \ > - cmp Tmp1, sp ; \ > - bls _InitializePrimaryStackEnd ; \ > - str GlobalSize, [Tmp1, #-4]! ; \ > - b _InitializePrimaryStackLoop ; \ > -_InitializePrimaryStackEnd: > - > #elif defined (__GNUC__) > > -#define MmioWrite32(Address, Data) \ > - ldr r1, =Address ; \ > - ldr r0, =Data ; \ > - str r0, [r1] > - > -#define MmioOr32(Address, OrData) \ > - ldr r1, =Address ; \ > - ldr r2, =OrData ; \ > - ldr r0, [r1] ; \ > - orr r0, r0, r2 ; \ > - str r0, [r1] > - > -#define MmioAnd32(Address, AndData) \ > - ldr r1, =Address ; \ > - ldr r2, =AndData ; \ > - ldr r0, [r1] ; \ > - and r0, r0, r2 ; \ > - str r0, [r1] > - > -#define MmioAndThenOr32(Address, AndData, OrData) \ > - ldr r1, =Address ; \ > - ldr r0, [r1] ; \ > - ldr r2, =AndData ; \ > - and r0, r0, r2 ; \ > - ldr r2, =OrData ; \ > - orr r0, r0, r2 ; \ > - str r0, [r1] > - > -#define MmioWriteFromReg32(Address, Reg) \ > - ldr r1, =Address ; \ > - str Reg, [r1] > - > -#define MmioRead32(Address) \ > - ldr r1, =Address ; \ > - ldr r0, [r1] > - > -#define MmioReadToReg32(Address, Reg) \ > - ldr r1, =Address ; \ > - ldr Reg, [r1] > - > -#define LoadConstant(Data) \ > - ldr r0, =Data > - > #define LoadConstantToReg(Data, Reg) \ > ldr Reg, =Data > > @@ -209,59 +44,11 @@ _InitializePrimaryStackEnd: > // Less magic in the macros if ldr reg, =expr works > // > > -// returns _Data in R0 and _Address in R1 > - > - > - > -#define MmioWrite32(Address, Data) MmioWrite32Macro Address, Data > - > - > - > - > -// returns Data in R0 and Address in R1, and OrData in r2 > -#define MmioOr32(Address, OrData) MmioOr32Macro Address, OrData > - > - > -// returns _Data in R0 and _Address in R1, and _OrData in r2 > - > - > -#define MmioAnd32(Address, AndData) MmioAnd32Macro Address, AndData > - > -// returns result in R0, _Address in R1, and _OrData in r2 > - > - > -#define MmioAndThenOr32(Address, AndData, OrData) MmioAndThenOr32Macro Address, AndData, OrData > - > - > -// returns _Data in _Reg and _Address in R1 > - > - > -#define MmioWriteFromReg32(Address, Reg) MmioWriteFromReg32Macro Address, Reg > - > -// returns _Data in R0 and _Address in R1 > - > - > -#define MmioRead32(Address) MmioRead32Macro Address > - > -// returns _Data in Reg and _Address in R1 > - > - > -#define MmioReadToReg32(Address, Reg) MmioReadToReg32Macro Address, Reg > - > - > -// load R0 with _Data > - > - > -#define LoadConstant(Data) LoadConstantMacro Data > - > // load _Reg with _Data > > > #define LoadConstantToReg(Data, Reg) LoadConstantToRegMacro Data, Reg > > -// conditional load testing eq flag > -#define LoadConstantToRegIfEq(Data, Reg) LoadConstantToRegIfEqMacro Data, Reg > - > #endif > > #endif > diff --git a/ArmPkg/Include/AsmMacroIoLib.inc b/ArmPkg/Include/AsmMacroIoLib.inc > index 95dc640d6fc3..c9cad5230c94 100644 > --- a/ArmPkg/Include/AsmMacroIoLib.inc > +++ b/ArmPkg/Include/AsmMacroIoLib.inc > @@ -17,60 +17,6 @@ > > > MACRO > - MmioWrite32Macro $Address, $Data > - ldr r1, = ($Address) > - ldr r0, = ($Data) > - str r0, [r1] > - MEND > - > - MACRO > - MmioOr32Macro $Address, $OrData > - ldr r1, =($Address) > - ldr r2, =($OrData) > - ldr r0, [r1] > - orr r0, r0, r2 > - str r0, [r1] > - MEND > - > - MACRO > - MmioAnd32Macro $Address, $AndData > - ldr r1, =($Address) > - ldr r2, =($AndData) > - ldr r0, [r1] > - and r0, r0, r2 > - str r0, [r1] > - MEND > - > - MACRO > - MmioAndThenOr32Macro $Address, $AndData, $OrData > - ldr r1, =($Address) > - ldr r0, [r1] > - ldr r2, =($AndData) > - and r0, r0, r2 > - ldr r2, =($OrData) > - orr r0, r0, r2 > - str r0, [r1] > - MEND > - > - MACRO > - MmioWriteFromReg32Macro $Address, $Reg > - ldr r1, =($Address) > - str $Reg, [r1] > - MEND > - > - MACRO > - MmioRead32Macro $Address > - ldr r1, =($Address) > - ldr r0, [r1] > - MEND > - > - MACRO > - MmioReadToReg32Macro $Address, $Reg > - ldr r1, =($Address) > - ldr $Reg, [r1] > - MEND > - > - MACRO > LoadConstantMacro $Data > ldr r0, =($Data) > MEND > -- > 2.7.4 >