Port: U-Boot for BeagleBone

Tim Kientzle tim at kientzle.com
Sat May 18 22:34:36 UTC 2013


On May 18, 2013, at 5:43 PM, Andrew Turner wrote:

> 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.

Hmmm….  Maybe I've just been lucky, and certainly my
memory isn't what it should be, but I recall switching my
U-Boot builds to use clang shortly after clang was
made the default for ARM and I've been booting real
systems with the result ever since.

Doesn't clang complain about unsupported options?
My U-Boot build logs definitely show this option in the
compiler invocations and there are no warnings about
it.  (Plenty of warnings about other things, but none about
this option.)

Maybe --fixed-<reg> was added some time recently?
I found a thread from back in October where some clang
developers were discussing how to implement it:

https://groups.google.com/forum/?fromgroups#!topic/llvm-dev/FKw1fWqwcW0


Tim


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


More information about the freebsd-arm mailing list