From ae3497cd03cdd096730b7e797cadf3b7bcfbdb90 Mon Sep 17 00:00:00 2001 From: Mark Hatle Date: Sat, 18 Dec 2021 14:41:27 -0800 Subject: Microblaze: Make microblaze-generic arch dynamic to configuration Adjust configurations, and users of the generic configuration. The TUNE must be set BEFOER the inclusion, otherwise there is no way to dynamicly generate the correct MACHINE_ARCH. Signed-off-by: Mark Hatle --- meta-xilinx-bsp/conf/machine/include/soc-tune-include.inc | 7 +++++-- .../conf/machine/include/xilinx-microblaze.inc | 7 +++++++ meta-xilinx-bsp/conf/machine/kc705-microblazeel.conf | 5 ++--- meta-xilinx-bsp/conf/machine/microblaze-generic.conf | 15 +++++++++++++-- .../machine/microblazeel-v11.0-bs-cmp-mh-div-generic.conf | 4 ++-- .../machine/microblazeel-v11.0-bs-cmp-ml-generic.conf | 4 ++-- meta-xilinx-bsp/conf/machine/ml605-qemu-microblazeel.conf | 6 ++---- .../conf/machine/s3adsp1800-qemu-microblazeeb.conf | 6 ++---- 8 files changed, 35 insertions(+), 19 deletions(-) create mode 100644 meta-xilinx-bsp/conf/machine/include/xilinx-microblaze.inc (limited to 'meta-xilinx-bsp') diff --git a/meta-xilinx-bsp/conf/machine/include/soc-tune-include.inc b/meta-xilinx-bsp/conf/machine/include/soc-tune-include.inc index 810ad9e9..539879d4 100644 --- a/meta-xilinx-bsp/conf/machine/include/soc-tune-include.inc +++ b/meta-xilinx-bsp/conf/machine/include/soc-tune-include.inc @@ -1,13 +1,16 @@ +DEFAULTTUNE ??= "armv8a" + # Unfortunately various tunefiles don't include each other, so create # a list of things to require based on the DEFAULTTUNE setting. TUNEFILE[cortexr5] = "conf/machine/include/arm/armv7r/tune-cortexr5.inc" TUNEFILE[cortexa9thf-neon] = "conf/machine/include/arm/armv7a/tune-cortexa9.inc" +TUNEFILE[armv8a] = "conf/machine/include/arm/arch-armv8a.inc" TUNEFILE[cortexa53] = "conf/machine/include/arm/armv8a/tune-cortexa53.inc" TUNEFILE[cortexa72] = "conf/machine/include/arm/armv8a/tune-cortexa72.inc" TUNEFILE[cortexa72-cortexa53] = "conf/machine/include/arm/armv8a/tune-cortexa72-cortexa53.inc" -TUNEFILE[microblaze] = "conf/machine/include/microblaze/tune-microblaze.inc" +TUNEFILE[microblaze] = "conf/machine/include/xilinx-microblaze.inc" # Default to arch-armv8a.inc -TUNEFILE = "${@ d.getVarFlag('TUNEFILE', d.getVar('DEFAULTTUNE')) if d.getVarFlag('TUNEFILE', d.getVar('DEFAULTTUNE')) else 'conf/machine/include/arm/arch-armv8a.inc'}" +TUNEFILE = "${@ d.getVarFlag('TUNEFILE', d.getVar('DEFAULTTUNE')) or 'conf/machine/include/arm/arch-armv8a.inc'}" require ${TUNEFILE} diff --git a/meta-xilinx-bsp/conf/machine/include/xilinx-microblaze.inc b/meta-xilinx-bsp/conf/machine/include/xilinx-microblaze.inc new file mode 100644 index 00000000..d0252e79 --- /dev/null +++ b/meta-xilinx-bsp/conf/machine/include/xilinx-microblaze.inc @@ -0,0 +1,7 @@ +# To avoid the require overriding previous defaults we use the override to make this the default +TUNE_FEATURES_save := "${TUNE_FEATURES:tune-microblaze}" + +require conf/machine/include/microblaze/tune-microblaze.inc + +# Reset the default value back to what it was previously set to... +TUNE_FEATURES:tune-microblaze := "${TUNE_FEATURES_save}" diff --git a/meta-xilinx-bsp/conf/machine/kc705-microblazeel.conf b/meta-xilinx-bsp/conf/machine/kc705-microblazeel.conf index 097ca084..36cdc1e5 100644 --- a/meta-xilinx-bsp/conf/machine/kc705-microblazeel.conf +++ b/meta-xilinx-bsp/conf/machine/kc705-microblazeel.conf @@ -3,10 +3,9 @@ #@DESCRIPTION: Machine support for Xilinx KC705 Embedded Kit. # -require conf/machine/include/microblaze/tune-microblaze.inc -require conf/machine/include/machine-xilinx-default.inc +TUNE_FEATURES:tune-microblaze ?= "microblaze v11.0 barrel-shift reorder pattern-compare multiply-high divide-hard" -TUNE_FEATURES:tune-microblaze += "v11.0 barrel-shift reorder pattern-compare multiply-high divide-hard" +require conf/machine/microblaze-generic.conf MACHINE_FEATURES = "" diff --git a/meta-xilinx-bsp/conf/machine/microblaze-generic.conf b/meta-xilinx-bsp/conf/machine/microblaze-generic.conf index af119f5f..6dfa9997 100644 --- a/meta-xilinx-bsp/conf/machine/microblaze-generic.conf +++ b/meta-xilinx-bsp/conf/machine/microblaze-generic.conf @@ -2,11 +2,22 @@ #@NAME: microblaze-generic #@DESCRIPTION: Generic microblaze defaults to little-endian v11.0 barrel-shift pattern-compare reorder divide-hard multiple-high support -require conf/machine/include/microblaze/tune-microblaze.inc +# Set the default for a modern full feature microblaze... +TUNE_FEATURES:tune-microblaze ?= "microblaze v11.0 barrel-shift pattern-compare reorder divide-hard multiply-high" +DEFAULTTUNE ?= "microblaze" + +require conf/machine/include/soc-tune-include.inc require conf/machine/include/machine-xilinx-default.inc +require conf/machine/include/machine-xilinx-qemu.inc require conf/machine/include/xilinx-board.inc -TUNE_FEATURES:tune-microblaze = "microblaze v11.0 barrel-shift pattern-compare reorder divide-hard multiply-high" +# The default MACHINE_ARCH is dynmic for microblaze, since the architecture is not fixed +# Based on core bitbake.conf +DEF_MACHINE_ARCH = "${@[d.getVar('TUNE_PKGARCH'), d.getVar('MACHINE')][bool(d.getVar('MACHINE'))].replace('-', '_')}" +# Enable a dynamic machine_arch +MB_MACHINE_ARCH = "${@[d.getVar('TUNE_PKGARCH'), d.getVar('TUNE_PKGARCH') + '-generic'][bool(d.getVar('MACHINE'))].replace('-', '_')}" + +MACHINE_ARCH = "${@['${MB_MACHINE_ARCH}', '${DEF_MACHINE_ARCH}']['microblaze-generic' != "${MACHINE}"]}" MACHINE_FEATURES = "" diff --git a/meta-xilinx-bsp/conf/machine/microblazeel-v11.0-bs-cmp-mh-div-generic.conf b/meta-xilinx-bsp/conf/machine/microblazeel-v11.0-bs-cmp-mh-div-generic.conf index 415a61c2..96b4e6d1 100644 --- a/meta-xilinx-bsp/conf/machine/microblazeel-v11.0-bs-cmp-mh-div-generic.conf +++ b/meta-xilinx-bsp/conf/machine/microblazeel-v11.0-bs-cmp-mh-div-generic.conf @@ -2,6 +2,6 @@ #@NAME: microblazeel-v11.0-bs-cmp-mh-div-generic #@DESCRIPTION: microblazeel-v11.0-bs-cmp-mh-div -require conf/machine/include/microblaze-generic.conf +TUNE_FEATURES:tune-microblaze ?= "microblaze v11.0 barrel-shift pattern-compare reorder divide-hard multiply-high" -TUNE_FEATURES:tune-microblaze = "microblaze v11.0 barrel-shift pattern-compare reorder divide-hard multiply-high" +require conf/machine/microblaze-generic.conf diff --git a/meta-xilinx-bsp/conf/machine/microblazeel-v11.0-bs-cmp-ml-generic.conf b/meta-xilinx-bsp/conf/machine/microblazeel-v11.0-bs-cmp-ml-generic.conf index 5d6ea8ab..cf83acf8 100644 --- a/meta-xilinx-bsp/conf/machine/microblazeel-v11.0-bs-cmp-ml-generic.conf +++ b/meta-xilinx-bsp/conf/machine/microblazeel-v11.0-bs-cmp-ml-generic.conf @@ -2,6 +2,6 @@ #@NAME: microblazeel-v11.0-bs-cmp-ml-generic #@DESCRIPTION: microblazeel-v11.0-bs-cmp-ml -require conf/machine/include/microblaze-generic.conf +TUNE_FEATURES:tune-microblaze ?= "microblaze v11.0 barrel-shift reorder pattern-compare multiply-low" -TUNE_FEATURES:tune-microblaze = "microblaze v11.0 barrel-shift reorder pattern-compare multiply-low" +require conf/machine/microblaze-generic.conf diff --git a/meta-xilinx-bsp/conf/machine/ml605-qemu-microblazeel.conf b/meta-xilinx-bsp/conf/machine/ml605-qemu-microblazeel.conf index 49c007a2..a16c707b 100644 --- a/meta-xilinx-bsp/conf/machine/ml605-qemu-microblazeel.conf +++ b/meta-xilinx-bsp/conf/machine/ml605-qemu-microblazeel.conf @@ -2,11 +2,9 @@ #@NAME: ml605-qemu-microblazeel #@DESCRIPTION: MicroBlaze QEMU machine support ('petalogix-ml605' model) -require conf/machine/include/microblaze/tune-microblaze.inc -require conf/machine/include/machine-xilinx-default.inc -require conf/machine/include/machine-xilinx-qemu.inc +TUNE_FEATURES:tune-microblaze ?= "microblaze v8.50 barrel-shift reorder pattern-compare divide-hard multiply-high fpu-hard" -TUNE_FEATURES:tune-microblaze += "v8.50 barrel-shift reorder pattern-compare divide-hard multiply-high fpu-hard" +require conf/machine/microblaze-generic.conf MACHINE_FEATURES = "" diff --git a/meta-xilinx-bsp/conf/machine/s3adsp1800-qemu-microblazeeb.conf b/meta-xilinx-bsp/conf/machine/s3adsp1800-qemu-microblazeeb.conf index c68d6ab5..12621357 100644 --- a/meta-xilinx-bsp/conf/machine/s3adsp1800-qemu-microblazeeb.conf +++ b/meta-xilinx-bsp/conf/machine/s3adsp1800-qemu-microblazeeb.conf @@ -2,11 +2,9 @@ #@NAME: s3adsp1800-qemu-microblazeeb #@DESCRIPTION: MicroBlaze QEMU machine support ('petalogix-s3adsp1800' model) -require conf/machine/include/microblaze/tune-microblaze.inc -require conf/machine/include/machine-xilinx-default.inc -require conf/machine/include/machine-xilinx-qemu.inc +TUNE_FEATURES:tune-microblaze ?= "microblaze v8.00 bigendian barrel-shift pattern-compare multiply-low" -TUNE_FEATURES:tune-microblaze += "v8.00 bigendian barrel-shift pattern-compare multiply-low" +require conf/machine/microblaze-generic.conf MACHINE_FEATURES = "" -- cgit v1.2.3-54-g00ecf