FreeBSD/arm64 MACHINE/MACHINE_ARCH identification

Warner Losh imp at bsdimp.com
Thu Feb 12 06:54:48 UTC 2015


> On Feb 11, 2015, at 8:46 PM, Ed Maste <emaste at FreeBSD.org> wrote:
> 
> On 11 February 2015 at 19:20, Warner Losh <imp at bsdimp.com> wrote:
>> 
>> Linux used the original aarch64, but later changed to arm64.
> 
> Are you sure? As far as I can tell Linux reports "aarch64" for uname
> -m (i.e., hw.machine) and that is what config.guess / autoconf
> expects.

They moved the sources in the kernel from aarch64 to arm64. I’m sure.

>> I suggest
>> that we follow this carefully. We botched the naming of amd64 and have
>> dozens of warts in our build system because of it.
> 
> Indeed. We have to be sure that this is correct before it makes it to HEAD.
> 
>> I strongly object to the MACHINE change for reasons stated above, but the MACHINE_ARCH
>> is likely a very good change since it aligns with the expected values for configuring things like
>> clang, gcc, bintuils, etc.
> 
> As far as I can tell it's uname -m / sysctl hw.machine that's used by
> autoconf.  Uname -p is hw.machine_arch and doesn't seem to be used.

I think you’re wrong here. uname -p is definitely used when you configure
things like gcc. This is why we had to hack it to make armv6 as our
uname -p output work so we could bootstrap on the native hardware.
amd64’s -p name should have been x86_64. We’ve created no end of
issues for ourselves by not doing that.

config.guess uses uname -p:

    *:FreeBSD:*:*)
        UNAME_PROCESSOR=`/usr/bin/uname -p`
        echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
        exit ;;

so uname -p must be ‘aarch64’ since that’s what is expected. name -m must
be arm64 unless we move our kernel implementation to sys/aarch64 from the
sys/arm64 it is now.

Warner


More information about the freebsd-arm mailing list