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