Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 17 Apr 2012 08:09:54 +1200
From:      Andrew Turner <andrew@fubar.geek.nz>
To:        Juli Mallett <jmallett@FreeBSD.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r234337 - in head: lib/libc/arm/gen sys/arm/include
Message-ID:  <20120417080954.42df316a@fubar.geek.nz>
In-Reply-To: <CACVs6=8BYYN0ZW7zzHZduns-ZH9hUF=M1EmXfoOkCZVMh1ubpg@mail.gmail.com>
References:  <201204160938.q3G9cLmw026093@svn.freebsd.org> <CACVs6=8BYYN0ZW7zzHZduns-ZH9hUF=M1EmXfoOkCZVMh1ubpg@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 16 Apr 2012 12:41:38 -0700
Juli Mallett <jmallett@FreeBSD.org> wrote:

> On Mon, Apr 16, 2012 at 02:38, Andrew Turner <andrew@freebsd.org>
> wrote:
> > Log:
> > =C2=A0Replace the C implementation of __aeabi_read_tp with an assembly
> > version. This ensures we follow the ABI by preserving registers
> > r1-r3.
>=20
> > +ENTRY(__aeabi_read_tp)
> > + =C2=A0 =C2=A0 =C2=A0 ldr =C2=A0 =C2=A0 r0, .Larm_tp_address
> > + =C2=A0 =C2=A0 =C2=A0 ldr =C2=A0 =C2=A0 r0, [r0]
> > + =C2=A0 =C2=A0 =C2=A0 RET
> > +
> > +.Larm_tp_address:
> > + =C2=A0 =C2=A0 =C2=A0 .word ARM_TP_ADDRESS
> > +
>=20
> Why is this indirection required?  Can't you just use ARM_TP_ADDRESS
> instead of loading it from data?
ARM will let us load a limited number of values straight into registers
with a move instruction. Unfortunately the value of ARM_TP_ADDRESS is
not one of them.

>  Also, is our convention for ARM to
> use END() with ENTRY() or not?
There is no END() macro for ARM.

Andrew



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120417080954.42df316a>