dragora-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Dragora-users] [musl] Darkcrusade 2017Jan05 (cross compiler set)


From: Szabolcs Nagy
Subject: Re: [Dragora-users] [musl] Darkcrusade 2017Jan05 (cross compiler set)
Date: Sun, 8 Jan 2017 03:10:07 +0100
User-agent: Mutt/1.6.0 (2016-04-01)

* Matias A. Fonzo <address@hidden> [2017-01-07 19:55:38 -0300]:
> On Sat, 7 Jan 2017 15:57:38 +0100
> Szabolcs Nagy <address@hidden> wrote:
> > * Matias A. Fonzo <address@hidden> [2017-01-06 20:31:34 -0300]:
> > > Thanks! -- I've removed the target file for armv7hl.
> > >   
> > 
> > i think you should keep the armv7hl and remove the armv8hl one.
> 
> Are you sure?:
> 
> armv8hl has the following options for GCC:
> 
> "--with-arch=armv7-a --with-float=hard --with-fpu=neon
> --with-tune=cortex-a8"
> 
> meanwhile armv7hl was:
> 
> "--with-arch=armv7-a --with-float=hard --with-fpu=neon"
> 
> 'armv8hl' is like "it can run on the armv7-a but armv8-a has the honor".
> 
> This is confusing, so.. only 64bit is capable of armv8-a?.

in armvX-a the X is an architecture version (the -a means
application profile, there are m and r profiles as well)

the latest architecture version is 8 (it has revisions 8.1,
8.2 and 8.3 introducing various extensions)

the armv8-a architecture has two execution states: aarch32
and aarch64, the former is 32bit and backward compatible with
armv7-a, the later is 64bit.

i think an armv8-a implemetation has to support both aarch32
and aarch64 execution states (so an armv8-a core can run
64bit and 32bit binaries, just like a 64bit x86 cpu)

the 32bit and 64bit toolchains needed different naming since
they are clearly not abi compatible, for 32bit the old scheme
was kept: armv8 in a triplet or elf platform string means 32bit,
while the 64bit toolchain naming uses aarch64 now (various
projects did not like that and call it arm64 which is visually
easy to confuse with amd64 and trips up scripts that matched
arm* for 32bit arm so there is a lot of mess around naming).

cortex-aX is a micro-architecture, it's a cpu core design that
conforms to an arm architecture version (designed by arm, there
are other cores not desiged by arm), the X is pretty random,
cortex-a8 happens to be an old armv7-a core. (cores are usually
part of a soc that is designed by some vendor who sells the chip)

(older arm cores were called arm7xx, arm8xx,.. arm11xx with
random xx to add further confusion when somebody talks about
arm7 or arm8 cpus.)

so calling a cortex-a8 tuned toolchain armv8hl is misleading
(and not very useful to maintain separately if you have a generic
armv7-a toolchain anyway: in linux distro land you want a generic
toolchain so the built binaries are useful for many devices, in
the mobile world binaries are often tuned for a particular
microarchitecture because the vendor provides those with the
device)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]