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