[OE-core] [PATCH 1/6] arch-armv8a.inc: add tune include for armv8

Khem Raj raj.khem at gmail.com
Sat Feb 23 20:04:41 UTC 2019


On Sat, Feb 23, 2019 at 11:37 AM Mike Crowe <mac at mcrowe.com> wrote:
>
> On Monday 04 February 2019 at 18:57:22 -0800, Khem Raj wrote:
> > From: ayaka <ayaka at soulik.info>
> >
> > There are some addtional instructions apart from bare armv8,
> > also there is armv8.1, armv8.2.
> >
> > Most the processor would support crc, except X-gene 1.
> >
> > Signed-off-by: Randy Li <ayaka at soulik.info>
> > Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > ---
> >  meta/conf/machine/include/arm/arch-armv8.inc  |  1 -
> >  meta/conf/machine/include/arm/arch-armv8a.inc | 28 +++++++++++++++++++
> >  2 files changed, 28 insertions(+), 1 deletion(-)
> >  delete mode 100644 meta/conf/machine/include/arm/arch-armv8.inc
> >  create mode 100644 meta/conf/machine/include/arm/arch-armv8a.inc
> >
> > diff --git a/meta/conf/machine/include/arm/arch-armv8.inc b/meta/conf/machine/include/arm/arch-armv8.inc
> > deleted file mode 100644
> > index 5e832fae6d..0000000000
> > --- a/meta/conf/machine/include/arm/arch-armv8.inc
> > +++ /dev/null
> > @@ -1 +0,0 @@
> > -require conf/machine/include/arm/arch-arm64.inc
> > diff --git a/meta/conf/machine/include/arm/arch-armv8a.inc b/meta/conf/machine/include/arm/arch-armv8a.inc
> > new file mode 100644
> > index 0000000000..323d0d7f0f
> > --- /dev/null
> > +++ b/meta/conf/machine/include/arm/arch-armv8a.inc
> > @@ -0,0 +1,28 @@
> > +DEFAULTTUNE ?= "armv8a-crc"
> > +
> > +TUNEVALID[armv8a] = "Enable instructions for ARMv8-a"
> > +TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8a', ' -march=armv8-a', '', d)}"
> > +TUNEVALID[simd] = "Enable instructions for ARMv8-a Advanced SIMD and floating-point"
> > +TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'simd', '+simd', '', d)}"
> > +TUNEVALID[crc] = "Enable instructions for ARMv8-a Cyclic Redundancy Check (CRC)"
> > +TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'crc', '+crc', '', d)}"
> > +TUNEVALID[crypto] = "Enable instructions for ARMv8-a cryptographic"
> > +TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'crypto', '+crypto', '', d)}"
> > +MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8a', 'armv8a:', '' ,d)}"
> > +
> > +require conf/machine/include/arm/arch-arm64.inc
> > +
> > +# Little Endian base configs
> > +AVAILTUNES += "armv8a armv8a-crc armv8a-crc-crypto armv8a-crypto"
> > +ARMPKGARCH_tune-armv8a                    ?= "armv8a"
> > +ARMPKGARCH_tune-armv8a-crc                ?= "armv8a"
> > +ARMPKGARCH_tune-armv8a-crypto             ?= "armv8a"
> > +ARMPKGARCH_tune-armv8a-crc-crypto         ?= "armv8a"
> > +TUNE_FEATURES_tune-armv8a                  = "aarch64 armv8a simd"
> > +TUNE_FEATURES_tune-armv8a-crc              = "${TUNE_FEATURES_tune-armv8a} crc"
> > +TUNE_FEATURES_tune-armv8a-crypto           = "${TUNE_FEATURES_tune-armv8a} crypto"
> > +TUNE_FEATURES_tune-armv8a-crc-crypto       = "${TUNE_FEATURES_tune-armv8a-crc} crypto"
> > +PACKAGE_EXTRA_ARCHS_tune-armv8a            = "aarch64 armv8a simd"
> > +PACKAGE_EXTRA_ARCHS_tune-armv8a-crc        = "${PACKAGE_EXTRA_ARCHS_tune-armv8a} crc"
> > +PACKAGE_EXTRA_ARCHS_tune-armv8a-crypto     = "${PACKAGE_EXTRA_ARCHS_tune-armv8a} crypto"
> > +PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-crypto = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc} crypto"
> > --
> > 2.20.1
>
> I believe that this change, along with
> 6719de403620dded075dc74f2976669d95bffd7a, may have broken multilib for
> AArch64. :(
>
> When I enable multilib in local.conf with:
>
>  require conf/multilib.conf
>  MULTILIBS = "multilib:lib32"
>  DEFAULTTUNE_virtclass-multilib-lib32 = "armv7at-neon"
>
> then both the primary target and lib32- packages end up installing stuff
> into /usr/lib (and would presumably conflict, if I got as far as installing
> them.)
>
> If I revert 6719de403620dded075dc74f2976669d95bffd7a and
> d1db78b0e284e1a1f370e71183ded0cbdc1475db then the primary target packages
> end up installing stuff in /usr/lib64 as would be expected.
>
> This appears to be because baselib = "lib" rather than "lib64". That in
> turn may be because BASE_LIB_tune-armv8a-crc does not exist.
>
> If I apply this patch:
>
> diff --git a/meta/conf/machine/include/arm/arch-armv8a.inc b/meta/conf/machine/include/arm/arch-armv8a.inc
> index 323d0d7f0f..649deca61b 100644
> --- a/meta/conf/machine/include/arm/arch-armv8a.inc
> +++ b/meta/conf/machine/include/arm/arch-armv8a.inc
> @@ -26,3 +26,4 @@ PACKAGE_EXTRA_ARCHS_tune-armv8a            = "aarch64 armv8a simd"
>  PACKAGE_EXTRA_ARCHS_tune-armv8a-crc        = "${PACKAGE_EXTRA_ARCHS_tune-armv8a} crc"
>  PACKAGE_EXTRA_ARCHS_tune-armv8a-crypto     = "${PACKAGE_EXTRA_ARCHS_tune-armv8a} crypto"
>  PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-crypto = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc} crypto"
> +BASE_LIB_tune-armv8a-crc = "lib64"
>
> then multilib behaves as it did before. Is this the correct fix?

it is in right direction, while you are at it also add it for other armv8 tunes

BASE_LIB_tune-armv8a                    = "lib64"
BASE_LIB_tune-armv8a-crc                = "lib64"
BASE_LIB_tune-armv8a-crypto             = "lib64"
BASE_LIB_tune-armv8a-crc-crypto         = "lib64"

>
> Thanks.
>
> Mike.


More information about the Openembedded-core mailing list