From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-it0-x233.google.com (mail-it0-x233.google.com [IPv6:2607:f8b0:4001:c0b::233]) (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 14C301A1DF3 for ; Wed, 10 Aug 2016 10:26:48 -0700 (PDT) Received: by mail-it0-x233.google.com with SMTP id u186so44190941ita.0 for ; Wed, 10 Aug 2016 10:26:48 -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=RfO4jWGKpjrQN0xZ74n6mazfgUvKYhZt5k6nfieOOC4=; b=Dm8mfybbFbkAP9Kb5xsMernIzmLH8gUiYX2DAeAzw4h0nzq75KxGY/WaqeNOrcIum+ lOgXCQcnjWGQHWVI/ce6oyVhU5kPFjv/AbPhjac97GiZXGWE2nnDRz4O0uczASaTrx12 z2aw/OLBnMW4rZdPG2XpPCBH34k+N5TgB4zjo= 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=RfO4jWGKpjrQN0xZ74n6mazfgUvKYhZt5k6nfieOOC4=; b=nNhmwz+3a0RsdkTPrcnMU7tfInMZflgDu6TWx332LaIs/kmWFLoFS4E9Q2vCrh6RDH 8Jb7nxqiPVKqvE+yT14Rtp4Ty/OcZwztIDztCXC84uWwc9MPouKRDI1NHX2oRmEJc7ju rChLiyHbqsX05jsiP/Bvfh4cPugpCJxr9ioi7Ao4OFiCzOpV8qDxOisPCQsNgBxikzr0 p+L1BZ4bb41Se6fV4iNy8S3VFqJA31QSHUI4vuWq9cfghHBh6OEmI7vymQUTrosLbdIQ SWCtBErN5yUohdze8IqsjxKNif5txYFzMdgs5GfY3VSWt/Iu5gwtTq3+i9AwZzvqYw5M jr8A== X-Gm-Message-State: AEkoouvm+sZVs493/DeNTCOhyaCkq8HzFHA8e1ClmuOK0KZkiXKDVAXKWhpT2B64VcSYAnu+XU+R3SBTAxibmLiU X-Received: by 10.36.25.144 with SMTP id b138mr4672594itb.29.1470850007146; Wed, 10 Aug 2016 10:26:47 -0700 (PDT) MIME-Version: 1.0 Received: by 10.36.204.195 with HTTP; Wed, 10 Aug 2016 10:26:46 -0700 (PDT) In-Reply-To: <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> <20160810170424.GL31760@bivouac.eciton.net> From: Ard Biesheuvel Date: Wed, 10 Aug 2016 19:26:46 +0200 Message-ID: To: Leif Lindholm Cc: edk2-devel-01 , "Cohen, Eugene" , Laszlo Ersek 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:26:48 -0000 Content-Type: text/plain; charset=UTF-8 On 10 August 2016 at 19:04, Leif Lindholm wrote: > 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: No, they are not. These are asm implementations, and completely unused. > 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 >>