Date: Sun, 01 Jun 2014 21:10:25 +0200 From: Jeroen Hofstee <freebsd_arm@myspectrum.nl> To: Mark R V Murray <mark@grondar.org> Cc: Tim Kientzle <tim@kientzle.com>, freebsd-arm <freebsd-arm@FreeBSD.org>, ticso@cicely.de, Ian Lepore <ian@FreeBSD.org>, albert.u.boot@aribaud.net Subject: Re: Building an ARM/RPI-B release (hacked) on CURRENT/AMD64. Message-ID: <1401649825.2295.45.camel@yellow> In-Reply-To: <ED243420-AC33-4D90-A23D-0266C142F3C1@grondar.org> References: <9FDD6F0E-B2A9-48D9-A3E4-181868995FDA@grondar.org> <EC41E53F-96EF-4652-9A02-D49448D104BE@kientzle.com> <20140417103117.GE44138@cicely7.cicely.de> <1397738961.1124.157.camel@revolution.hippie.lan> <ED243420-AC33-4D90-A23D-0266C142F3C1@grondar.org>
index | next in thread | previous in thread | raw e-mail
On do, 2014-04-17 at 19:01 +0100, Mark R V Murray wrote:
> On 17 Apr 2014, at 13:49, Ian Lepore <ian@FreeBSD.org> wrote:
>
> > U-boot requires that a global register be set aside by the compiler and
> > it's used to access all global vars. As I vaguely understand it, u-boot
> > used to want r8 for this, and clang didn't used to support the concept
> > at all. Now clang supports it, but only for r9, and apparently more
> > recent u-boot expects r9 rather than r8. So the fix is probably to use
> > more recent u-boot sources (I've been using 2014.01 for imx6 stuff), and
> > probably to add the new -ffixed-r9 flag for a clang build.
>
> Correct.
>
> The pig in trying to build u-boot 2004.04 with Clang/XDEV is the use of
>
> #define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r9”)
>
> which means “gd is an alias for the r9 register and is a pointer to type …”
>
> … I think. :-)
>
> Clang doesn’t like this one bit. First objection is to “global register variables”, so if I experimentally knock out the “register”, I simply get the second objection - to "multiple instances of the r9 global variable”.
>
> Googling a bit suggests that Clang just plain can’t do this. :-(
>
Well with a bit of creativity this will work [1]. Hopefully this ends up
in mainline u-boot. For the record, it is the U-Boot Arm maintainer
(Albert) who actually dug up the fixed-r9 in llvm (but was a hidden
option for ios).
Regards,
Jeroen
[1]
https://github.com/jhofstee/u-boot/commit/4ab717325cb7e7b02efaec2b3f95bf9874492ba2
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1401649825.2295.45.camel>
