Rasbperry Pi, what should TARGET_ARCH be?

John-Mark Gurney jmg at funkthat.com
Sat Jan 25 18:13:01 UTC 2014


Warner Losh wrote this message on Sat, Jan 25, 2014 at 10:50 -0700:
> On Jan 24, 2014, at 9:40 PM, Glen Barber wrote:
> 
> > Hi,
> > 
> > I've been working on adding support for embedded systems to the release
> > scripts, which set up a chroot to ensure a clean build environment, then
> > runs Tim's Crochet scripts.
> > 
> > For the RPI-B, recent updates to the build scripts work fine for
> > 11.0-CURRENT and 10.0-STABLE.  However, 10.0-RELEASE images fail to
> > boot.
> 
> If that worked, it worked by accident.
> 
> > I showed output from 'uname -pm' out-of-band of an 11.0-CURRENT image,
> > and was suspicious that the output showed 'arm arm', not 'arm armv6'.
> > Warner had the same impression it should be 'arm armv6'.
> > 
> > Hiren poked around the Crochet code, and saw that 'TARGET_ARCH=arm' is
> > set for the RaspberryPi board by default.
> 
> This is incorrect.
> 
> > As a "just in case" experiment, I retried the 10.0-RELEASE code
> > (release/10.0.0/) with TARGET_ARCH=armv6, and sure enough, it works.
> > 
> > But, I don't know *why*.
> 
> It works because that's the architecture that the RPi runs.
> 
> > Is this a change between head/ and stable/10/ versus releng/10.0/ ?
> > 
> > I can handle a differentiation between the branches with regard to this
> > (sort of), but I want to make sure the correct TARGET_ARCH is being set
> > across the different branches, so it can be handled properly in the
> > build scripts, and usable images can be produced.
> 
> The definition should be the same on both branches. You must use TARGET_ARCH=armv6 on all known branches to produce working code.  You might get lucky and get TARGET_ARCH=arm and have it work, but that's most definitely not a supported configuration.
> 
> > So, what should be used?  And where?
> 
> For RPi, TARGET_ARCH=armv6 everywhere on all branches >= 9. RPi isn't supported 8 and lower.

May I propose this patch:
https://www.funkthat.com/~jmg/kerncheckarch.patch

This uses either TARGET[_ARCH] or uname -[mp] to make sure that the
they match w/ the new kernel being built...  I believe I did get the
-m and -p w/ the correct order, but as I don't have a machine where
they different, I can't confirm...

This would prevent the issue that Glen experienced...

-- 
  John-Mark Gurney				Voice: +1 415 225 5579

     "All that I will do, has been done, All that I have, has not."


More information about the freebsd-arm mailing list