Building an ARM/RPI-B release (hacked) on CURRENT/AMD64.

Mark R V Murray mark at grondar.org
Thu Apr 17 18:01:24 UTC 2014


On 17 Apr 2014, at 13:49, Ian Lepore <ian at 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. :-(

M
-- 
Mark R V Murray

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 353 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://lists.freebsd.org/pipermail/freebsd-arm/attachments/20140417/0d440f49/attachment.sig>


More information about the freebsd-arm mailing list