From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tom Rini Date: Mon, 13 Jan 2014 08:40:19 -0500 Subject: [U-Boot] [PATCH] arm: New stack pointer is already aligned In-Reply-To: <20140113100750.10a3be2e@lilith> References: <1385580930-9830-1-git-send-email-trini@ti.com> <20131129061413.52BD4380401@gemini.denx.de> <20140113100750.10a3be2e@lilith> Message-ID: <20140113134019.GF5181@bill-the-cat> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Mon, Jan 13, 2014 at 10:07:50AM +0100, Albert ARIBAUD wrote: > Hi Wolfgang, > > On Fri, 29 Nov 2013 07:14:13 +0100, Wolfgang Denk wrote: > > > Dear Tom Rini, > > > > In message <1385580930-9830-1-git-send-email-trini@ti.com> you wrote: > > > The code in arch/arm/lib/board.c::board_init_f that sets > > > gd->start_addr_sp has already make sure we're 8-byte aligned, so we > > > don't need to do that again. > > > > > > Cc: Albert ARIBAUD > > > Signed-off-by: Tom Rini > > > --- > > > arch/arm/lib/crt0.S | 1 - > > > 1 file changed, 1 deletion(-) > > > > > > diff --git a/arch/arm/lib/crt0.S b/arch/arm/lib/crt0.S > > > index ac54b93..6b5ec01 100644 > > > --- a/arch/arm/lib/crt0.S > > > +++ b/arch/arm/lib/crt0.S > > > @@ -82,7 +82,6 @@ ENTRY(_main) > > > */ > > > > > > ldr sp, [r9, #GD_START_ADDR_SP] /* sp = gd->start_addr_sp */ > > > - bic sp, sp, #7 /* 8-byte alignment for ABI compliance */ > > > ldr r9, [r9, #GD_BD] /* r9 = gd->bd */ > > > sub r9, r9, #GD_SIZE /* new GD is below bd */ > > > > I recommend to keep this instruction. It's just a bit of defensive > > programming, and removing it does not save any measurable amount of > > memory footprint nor execution time. > > I would even go further: it is the setting of SP in C code which > should not be kept. I doubt the C specification mentions what should / > might happen when changing the stack pointer on the fly in code which > might need the stack at any point. I'm fine with dropping this patch (I noticed as I was tracing something else). But please note that in C we're just setting gd->start_addr_sp and aligning it there, we don't modify sp at all until the snippet of asm above. -- Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: Digital signature URL: