Port: U-Boot for BeagleBone

Andrew Turner andrew at fubar.geek.nz
Sat May 18 21:44:05 UTC 2013


On Sat, 18 May 2013 13:59:45 -0400
Tim Kientzle <tim at kientzle.com> wrote:

> 
> On May 18, 2013, at 10:54 AM, Warner Losh wrote:
> 
> > 
> > On May 18, 2013, at 10:46 AM, Tim Kientzle wrote:
> > 
> >> On May 18, 2013, at 10:41 AM, Warner Losh wrote:
> >>> 
> >>> On May 18, 2013, at 10:38 AM, Jason Birch wrote:
> >>> 
> >>>> I'm not sure how it'd work internally in the ports tree (I'm a
> >>>> ports consumer, not a contributor), but I'd find it weird if a
> >>>> U-Boot port required me to get any devel/cross-* ports if U-Boot
> >>>> was able to be built by Clang native to FreeBSD 9.X+ and I had
> >>>> Clang set as my CC, CPP, CXX.
> >>> 
> >>> u-boot can't be built with clang.
> >> 
> >> Yes, it can.  Since the ARM clang switch was thrown,
> >> the xdev tools now build clang (unnecessarily, of course).
> >> U-Boot builds just fine with it:
> >> 
> >> $ armv6-freebsd-cc --version
> >> FreeBSD clang version 3.3 (trunk 178860) 20130405
> >> Target: armv6--freebsd
> >> Thread model: posix
> > 
> > Do these boot?
> 
> Gosh.  Now you've made me nervous that
> I might still be using old GCC-compiled versions.
> 
> Just a sec ….
> $ rm -rf u-boot-2013.04
> $ tar xf u-boot-2013.04.tar.bz2
> $ sudo ./crochet.sh -c beagleblack.sh
> 
> Copy to SD card …
> 
> Yep.  It boots.  ;-)
> 
> > I was under the impression that u-boot used global register flags
> > in gcc that clang wasn't going to support... I'd be happy if I'm
> > wrong though…
My understanding is clang doesn't support it. I have removed the only
one in our kernel when adding support for clang.

> Don't know the details.  Maybe Andrew knows what has changed?

The variable in question is in a macro in
arch/arm/include/asm/global_data.h. There is a pointer to a global data
structure in register r8. This register is reserved through the use of
the -ffixed-r8 compiler flag. I'm not sure if clang supports the
-ffixed-* flag or not.

Given this if you manage to get clang to build U-Boot is is unlikely to
work as it could change r8 within some functions unless there is some
way to tell it otherwise.

Andrew


More information about the freebsd-arm mailing list