From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [PATCH v3 6/6] xen: arm: Correctly use GLOBAL/ENTRY in head.S, avoid .global Date: Mon, 21 Jul 2014 15:18:44 +0100 Message-ID: <53CD2144.2000002@linaro.org> References: <1405947513.25022.59.camel@kazak.uk.xensource.com> <1405947600-26047-1-git-send-email-ian.campbell@citrix.com> <1405947600-26047-6-git-send-email-ian.campbell@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1405947600-26047-6-git-send-email-ian.campbell@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Ian Campbell , xen-devel@lists.xen.org Cc: tim@xen.org, stefano.stabellini@eu.citrix.com List-Id: xen-devel@lists.xenproject.org Hi Ian, On 07/21/2014 02:00 PM, Ian Campbell wrote: > Use ENTRY() for function entry points since it ensures correct > alignment where GLOBAL() doesn't. The exception is the initial start > label which must be at offset 0, so just use GLOBAL() to avoid the > possibility of realignment. > > Since everything happens to already be aligned there should be no > difference to the actual binary. objdump agrees. > > Signed-off-by: Ian Campbell Acked-by: Julien Grall Regards, > --- > v3: New patch > --- > xen/arch/arm/arm32/head.S | 8 +++----- > xen/arch/arm/arm64/head.S | 8 +++----- > 2 files changed, 6 insertions(+), 10 deletions(-) > > diff --git a/xen/arch/arm/arm32/head.S b/xen/arch/arm/arm32/head.S > index 14b172f..6573a42 100644 > --- a/xen/arch/arm/arm32/head.S > +++ b/xen/arch/arm/arm32/head.S > @@ -76,8 +76,7 @@ > * It should be linked at XEN_VIRT_START, and loaded at any > * 4K-aligned address. All of text+data+bss must fit in 2MB, > * or the initial pagetable code below will need adjustment. */ > - .global start > -start: > +GLOBAL(start) > /* zImage magic header, see: > * http://www.simtec.co.uk/products/SWLINUX/files/booting_article.html#d0e309 > */ > @@ -583,16 +582,15 @@ hex: .ascii "0123456789abcdef" > > #else /* CONFIG_EARLY_PRINTK */ > > +ENTRY(early_puts) > init_uart: > -.global early_puts > -early_puts: > puts: > putn: mov pc, lr > > #endif /* !CONFIG_EARLY_PRINTK */ > > /* This provides a C-API version of __lookup_processor_type */ > -GLOBAL(lookup_processor_type) > +ENTRY(lookup_processor_type) > stmfd sp!, {r4, r10, lr} > mov r10, #0 /* r10 := offset between virt&phys */ > bl __lookup_processor_type > diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S > index 9497ca1..99cc6e0 100644 > --- a/xen/arch/arm/arm64/head.S > +++ b/xen/arch/arm/arm64/head.S > @@ -100,8 +100,7 @@ > * or the initial pagetable code below will need adjustment. > */ > > - .global start > -start: > +GLOBAL(start) > /* > * DO NOT MODIFY. Image header expected by Linux boot-loaders. > */ > @@ -604,9 +603,8 @@ hex: .ascii "0123456789abcdef" > > #else /* CONFIG_EARLY_PRINTK */ > > +ENTRY(early_puts) > init_uart: > -.global early_puts > -early_puts: > puts: > putn: ret > > @@ -615,7 +613,7 @@ putn: ret > /* This provides a C-API version of __lookup_processor_type > * TODO: For now, the implementation return NULL every time > */ > -GLOBAL(lookup_processor_type) > +ENTRY(lookup_processor_type) > mov x0, #0 > ret > > -- Julien Grall