[meta-xilinx] [PATCH 4/4] arch-microblaze.inc: Consolidate MicroBlaze tune features
Nathan Rossi
nathan at nathanrossi.com
Wed Jan 18 05:40:56 PST 2017
This change adds the 'arch-microblaze.inc' architecture tune features
include which provides all the relevant tune features for MicroBlaze.
This include replaces the 'tune-microblaze-features.inc' include, which
is not actually a valid TUNE. This change results in the MicroBlaze tune
and tune feature include tree matching the layout of meta/.
This change additionally consolidates all the smaller includes
(feature-microblaze-*.inc) into larger sets or into the
arch-microblaze.inc. This makes the package arch string ordering much
clearer as well as removing the large number of variables uses to set
the TUNE_CCARGS.
Signed-off-by: Nathan Rossi <nathan at nathanrossi.com>
---
.../machine/include/microblaze/arch-microblaze.inc | 43 ++++++++++++++++++++++
.../microblaze/feature-microblaze-barrel-shift.inc | 3 --
.../microblaze/feature-microblaze-divide.inc | 3 --
.../microblaze/feature-microblaze-endian.inc | 13 -------
.../include/microblaze/feature-microblaze-fpu.inc | 17 ---------
.../include/microblaze/feature-microblaze-math.inc | 33 +++++++++++++++++
.../microblaze/feature-microblaze-multiply.inc | 9 -----
.../feature-microblaze-pattern-compare.inc | 3 --
.../microblaze/feature-microblaze-reorder.inc | 3 --
conf/machine/include/tune-microblaze-features.inc | 20 ----------
conf/machine/include/tune-microblaze.inc | 7 +---
11 files changed, 77 insertions(+), 77 deletions(-)
create mode 100644 conf/machine/include/microblaze/arch-microblaze.inc
delete mode 100644 conf/machine/include/microblaze/feature-microblaze-barrel-shift.inc
delete mode 100644 conf/machine/include/microblaze/feature-microblaze-divide.inc
delete mode 100644 conf/machine/include/microblaze/feature-microblaze-endian.inc
delete mode 100644 conf/machine/include/microblaze/feature-microblaze-fpu.inc
create mode 100644 conf/machine/include/microblaze/feature-microblaze-math.inc
delete mode 100644 conf/machine/include/microblaze/feature-microblaze-multiply.inc
delete mode 100644 conf/machine/include/microblaze/feature-microblaze-pattern-compare.inc
delete mode 100644 conf/machine/include/microblaze/feature-microblaze-reorder.inc
delete mode 100644 conf/machine/include/tune-microblaze-features.inc
diff --git a/conf/machine/include/microblaze/arch-microblaze.inc b/conf/machine/include/microblaze/arch-microblaze.inc
new file mode 100644
index 0000000000..9a5e685f08
--- /dev/null
+++ b/conf/machine/include/microblaze/arch-microblaze.inc
@@ -0,0 +1,43 @@
+# MicroBlaze architecture tune feature configuration
+
+# Architecture feature and override
+TUNEVALID[microblaze] = "MicroBlaze"
+MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "microblaze", "microblaze:", "" ,d)}"
+
+# Endian
+TUNEVALID[big-endian] = "Use Microblaze Big Endian."
+TUNECONFLICTS[big-endian] = "little-endian"
+TUNEVALID[little-endian] = "Use Microblaze Little Endian."
+TUNECONFLICTS[little-endian] = "big-endian"
+
+MBPKGARCH_ENDIAN = "${@bb.utils.contains("TUNE_FEATURES", "little-endian", "el", "eb" ,d)}"
+
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "big-endian", "-mbig-endian", "" ,d)}"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "little-endian", "-mlittle-endian", "" ,d)}"
+
+# General features
+TUNEVALID[barrel-shift] = "Enable Hardware Barrel Shifter"
+TUNEVALID[pattern-compare] = "Enable Pattern Compare Instructions"
+TUNEVALID[reorder] = "Enable Reorder Instructions"
+
+# General feature compiler args
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "barrel-shift", "-mxl-barrel-shift", "-mno-xl-barrel-shift" ,d)}"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "pattern-compare", "-mxl-pattern-compare", "-mno-xl-pattern-compare" ,d)}"
+TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "reorder", "-mxl-reorder", "-mno-xl-reorder" ,d)}"
+
+# General feature package architecture formatting
+MBPKGARCH_TUNE = ""
+MBPKGARCH_TUNE .= "${@bb.utils.contains("TUNE_FEATURES", "barrel-shift", "-bs", "" ,d)}"
+MBPKGARCH_TUNE .= "${@bb.utils.contains("TUNE_FEATURES", "pattern-compare", "-cmp", "" ,d)}"
+MBPKGARCH_TUNE .= "${@bb.utils.contains("TUNE_FEATURES", "reorder", "-re", "" ,d)}"
+
+# Additional features
+require conf/machine/include/microblaze/feature-microblaze-versions.inc
+require conf/machine/include/microblaze/feature-microblaze-math.inc
+
+# Architecture name, either 'microblazeeb' or 'microblazeel' depending on endianess
+TUNE_ARCH = "microblaze${@bb.utils.contains("TUNE_FEATURES", "little-endian", "el", "eb" ,d)}"
+
+# Package Architecture formatting
+TUNE_PKGARCH = "microblaze${MBPKGARCH_ENDIAN}${MBPKGARCH_VERSION}${MBPKGARCH_TUNE}${MBPKGARCH_MATH}"
+
diff --git a/conf/machine/include/microblaze/feature-microblaze-barrel-shift.inc b/conf/machine/include/microblaze/feature-microblaze-barrel-shift.inc
deleted file mode 100644
index ca7e7e3917..0000000000
--- a/conf/machine/include/microblaze/feature-microblaze-barrel-shift.inc
+++ /dev/null
@@ -1,3 +0,0 @@
-TUNEVALID[barrel-shift] = "Enable Microblaze Hardware Barrel Shift."
-MBCCARGSBARRELSHIFT += "${@bb.utils.contains("TUNE_FEATURES", "barrel-shift", "-mxl-barrel-shift", "-mno-xl-barrel-shift" ,d)}"
-MBPKGBARRELSHIFT .= "${@bb.utils.contains("TUNE_FEATURES", "barrel-shift", "-bs", "" ,d)}"
diff --git a/conf/machine/include/microblaze/feature-microblaze-divide.inc b/conf/machine/include/microblaze/feature-microblaze-divide.inc
deleted file mode 100644
index 5d010a4a20..0000000000
--- a/conf/machine/include/microblaze/feature-microblaze-divide.inc
+++ /dev/null
@@ -1,3 +0,0 @@
-TUNEVALID[divide-hard] = "Enable Microblaze hardware divider."
-MBCCARGSDIV += "${@bb.utils.contains("TUNE_FEATURES", "divide-hard", "-mno-xl-soft-div", "-mxl-soft-div" ,d)}"
-MBPKGDIV .= "${@bb.utils.contains("TUNE_FEATURES", "divide-hard", "-div", "" ,d)}"
diff --git a/conf/machine/include/microblaze/feature-microblaze-endian.inc b/conf/machine/include/microblaze/feature-microblaze-endian.inc
deleted file mode 100644
index 4c8aa6d667..0000000000
--- a/conf/machine/include/microblaze/feature-microblaze-endian.inc
+++ /dev/null
@@ -1,13 +0,0 @@
-# This feature file must be included/required FIRST as it defines the start of the PKGARCH bitbake variable
-MBCCARGSENDIAN = ""
-MBPKGENDIAN = ""
-
-TUNEVALID[little-endian] = "Use Microblaze Little Endian."
-MBCCARGSENDIAN += "${@bb.utils.contains("TUNE_FEATURES", "little-endian", "-mlittle-endian", "" ,d)}"
-MBPKGENDIAN .= "${@bb.utils.contains("TUNE_FEATURES", "little-endian", "el", "" ,d)}"
-
-TUNEVALID[big-endian] = "Use Microblaze Big Endian."
-MBCCARGSENDIAN += "${@bb.utils.contains("TUNE_FEATURES", "big-endian", "-mbig-endian", "" ,d)}"
-MBPKGENDIAN .= "${@bb.utils.contains("TUNE_FEATURES", "big-endian", "eb", "" ,d)}"
-
-TUNECONFLICTS[little-endian] = "big-endian"
diff --git a/conf/machine/include/microblaze/feature-microblaze-fpu.inc b/conf/machine/include/microblaze/feature-microblaze-fpu.inc
deleted file mode 100644
index bf2fe38b6c..0000000000
--- a/conf/machine/include/microblaze/feature-microblaze-fpu.inc
+++ /dev/null
@@ -1,17 +0,0 @@
-TUNEVALID[fpu-soft] = "Use Microblaze software FPU"
-TUNEVALID[fpu-hard] = "Enable Microblaze hardware FPU in basic mode."
-TUNEVALID[fpu-hard-extended] = "Enable Microblaze hardware FPU in extended mode - conversion and square root instructions."
-
-# Establish which fpu is configured in TUNE_FEATURES. Soft is the default for gcc.
-MBCCARGSFPU_BASIC = "${@bb.utils.contains("TUNE_FEATURES", "fpu-hard", "-mhard-float", "", d)}"
-MBCCARGSFPU = "${@bb.utils.contains("TUNE_FEATURES", "fpu-hard-extended", "-mhard-float -mxl-float-convert -mxl-float-sqrt", "${MBCCARGSFPU_BASIC}" ,d)}"
-
-MBPKGFPU_BASIC = "${@bb.utils.contains("TUNE_FEATURES", "fpu-hard", "-fb", "", d)}"
-MBPKGFPU = "${@bb.utils.contains("TUNE_FEATURES", "fpu-hard-extended", "-fe", "${MBPKGFPU_BASIC}", d)}"
-
-# Set target fpu (bitbake known target) to soft or hard (basic or extended in microblaze language)
-TARGETFPU_BASIC = "${@bb.utils.contains("TUNE_FEATURES", "fpu-hard", "fpu-hard", "fpu-soft", d)}"
-TARGET_FPU = "${@bb.utils.contains("TUNE_FEATURES", "fpu-hard-extended", "fpu-hard", "${TARGETFPU_BASIC}", d)}"
-
-TUNECONFLICTS[fpu-hard] = "fpu-soft"
-TUNECONFLICTS[fpu-hard-extended] = "fpu-soft"
diff --git a/conf/machine/include/microblaze/feature-microblaze-math.inc b/conf/machine/include/microblaze/feature-microblaze-math.inc
new file mode 100644
index 0000000000..b2c7f0716e
--- /dev/null
+++ b/conf/machine/include/microblaze/feature-microblaze-math.inc
@@ -0,0 +1,33 @@
+# This include describes the math features (integer and floating point) that
+# are available for the MicroBlaze ISA
+
+TUNEVALID[multiply-low] = "Hardware multipler with 32 bit result"
+TUNEVALID[multiply-high] = "Hardware multipler with 64 bit result"
+TUNEVALID[divide-hard] = "Hardware divider"
+TUNEVALID[fpu-soft] = "Software FPU"
+TUNEVALID[fpu-hard] = "Hardware FPU in basic mode"
+TUNEVALID[fpu-hard-extended] = "Hardware FPU in extended mode (conversion and square root instructions)"
+
+TUNECONFLICTS[fpu-soft] = "fpu-hard fpu-hard-extended"
+TUNECONFLICTS[fpu-hard] = "fpu-soft"
+TUNECONFLICTS[fpu-hard-extended] = "fpu-soft"
+
+# Compiler args
+TUNE_CCARGS += "${@bb.utils.contains_any('TUNE_FEATURES', ['multiply-low', 'multiply-high'], '-mno-xl-soft-mul', '-mxl-soft-mul', d)}"
+TUNE_CCARGS += "${@bb.utils.contains('TUNE_FEATURES', 'multiply-high', '-mxl-multiply-high', '', d)}"
+
+TUNE_CCARGS += "${@bb.utils.contains('TUNE_FEATURES', 'divide-hard', '-mno-xl-soft-div', '-mxl-soft-div' ,d)}"
+
+TUNE_CCARGS += "${@bb.utils.contains('TUNE_FEATURES', 'fpu-soft', '', '', d)}"
+TUNE_CCARGS += "${@bb.utils.contains_any('TUNE_FEATURES', ['fpu-hard', 'fpu-hard-extended'], '-mhard-float', '', d)}"
+TUNE_CCARGS += "${@bb.utils.contains('TUNE_FEATURES', 'fpu-hard-extended', '-mxl-float-convert -mxl-float-sqrt', '', d)}"
+
+# Set target fpu (bitbake known target) to soft or hard (basic or extended)
+TARGET_FPU = "${@bb.utils.contains_any('TUNE_FEATURES', 'fpu-hard fpu-hard-extended', 'fpu-hard', 'fpu-soft', d)}"
+
+# Package Architecture formatting
+MBPKGARCH_MATH = ""
+MBPKGARCH_MATH .= "${@bb.utils.contains('TUNE_FEATURES', 'multiply-high', '-mh', bb.utils.contains('TUNE_FEATURES', 'multiply-low', '-ml', '', d), d)}"
+MBPKGARCH_MATH .= "${@bb.utils.contains('TUNE_FEATURES', 'divide-hard', '-div', '' ,d)}"
+MBPKGARCH_MATH .= "${@bb.utils.contains('TUNE_FEATURES', 'fpu-hard-extended', '-fe', bb.utils.contains('TUNE_FEATURES', 'fpu-hard', '-fb', '', d), d)}"
+
diff --git a/conf/machine/include/microblaze/feature-microblaze-multiply.inc b/conf/machine/include/microblaze/feature-microblaze-multiply.inc
deleted file mode 100644
index e3f8ae5f66..0000000000
--- a/conf/machine/include/microblaze/feature-microblaze-multiply.inc
+++ /dev/null
@@ -1,9 +0,0 @@
-TUNEVALID[multiply-low] = "Enable Microblaze Hardware Multiply with low (32 bit) result."
-TUNEVALID[multiply-high] = "Enable Microblaze Hardware Multiply with high (64 bit) result."
-
-# Establish which Multiply output result size to use
-MBCCARGSMUL_BASIC = "${@bb.utils.contains("TUNE_FEATURES", "multiply-low", "-mno-xl-soft-mul", "-mxl-soft-mul" ,d)}"
-MBCCARGSMUL = "${@bb.utils.contains("TUNE_FEATURES", "multiply-high", "-mno-xl-soft-mul -mxl-multiply-high", "${MBCCARGSMUL_BASIC}" ,d)}"
-
-MBPKGMUL_BASIC = "${@bb.utils.contains("TUNE_FEATURES", "multiply-low", "-ml", "" ,d)}"
-MBPKGMUL = "${@bb.utils.contains("TUNE_FEATURES", "multiply-high", "-mh", "${MBPKGMUL_BASIC}" ,d)}"
diff --git a/conf/machine/include/microblaze/feature-microblaze-pattern-compare.inc b/conf/machine/include/microblaze/feature-microblaze-pattern-compare.inc
deleted file mode 100644
index 347fba79ee..0000000000
--- a/conf/machine/include/microblaze/feature-microblaze-pattern-compare.inc
+++ /dev/null
@@ -1,3 +0,0 @@
-TUNEVALID[pattern-compare] = "Enable Microblaze Pattern Compare Instructions."
-MBCCARGSPATTERNCOMPARE = "${@bb.utils.contains("TUNE_FEATURES", "pattern-compare", "-mxl-pattern-compare", "-mno-xl-pattern-compare" ,d)}"
-MBPKGSPATTERNCOMPARE = "${@bb.utils.contains("TUNE_FEATURES", "pattern-compare", "-cmp", "" ,d)}"
diff --git a/conf/machine/include/microblaze/feature-microblaze-reorder.inc b/conf/machine/include/microblaze/feature-microblaze-reorder.inc
deleted file mode 100644
index 0d809ad181..0000000000
--- a/conf/machine/include/microblaze/feature-microblaze-reorder.inc
+++ /dev/null
@@ -1,3 +0,0 @@
-TUNEVALID[reorder] = "Enable Microblaze Reorder Instructions."
-MBCCARGSREORDER = "${@bb.utils.contains("TUNE_FEATURES", "reorder", "-mxl-reorder", "-mno-xl-reorder" ,d)}"
-MBPKGREORDER = "${@bb.utils.contains("TUNE_FEATURES", "reorder", "-re", "" ,d)}"
diff --git a/conf/machine/include/tune-microblaze-features.inc b/conf/machine/include/tune-microblaze-features.inc
deleted file mode 100644
index 29463d2bcb..0000000000
--- a/conf/machine/include/tune-microblaze-features.inc
+++ /dev/null
@@ -1,20 +0,0 @@
-# The order of these files defines the order of sections in the PKGARCH variable
-require conf/machine/include/microblaze/feature-microblaze-endian.inc
-require conf/machine/include/microblaze/feature-microblaze-versions.inc
-require conf/machine/include/microblaze/feature-microblaze-barrel-shift.inc
-require conf/machine/include/microblaze/feature-microblaze-multiply.inc
-require conf/machine/include/microblaze/feature-microblaze-divide.inc
-require conf/machine/include/microblaze/feature-microblaze-fpu.inc
-require conf/machine/include/microblaze/feature-microblaze-pattern-compare.inc
-require conf/machine/include/microblaze/feature-microblaze-reorder.inc
-
-# Architecture name, either 'microblaze' or 'microblazeel' depending on endianess
-TUNE_ARCH = "microblaze${@bb.utils.contains("TUNE_FEATURES", "little-endian", "el", "eb" ,d)}"
-
-# Compiler args
-TUNE_CCARGS += "${MBCCARGSENDIAN} ${MBCCARGSBARRELSHIFT} ${MBCCARGSMUL} ${MBCCARGSDIV} ${MBCCARGSFPU} ${MBCCARGSPATTERNCOMPARE} ${MBCCARGSREORDER}"
-
-# Package Architecture formatting
-MBPKGMATH = "${MBPKGMUL}${MBPKGDIV}${MBPKGFPU}"
-TUNE_PKGARCH = "microblaze${MBPKGENDIAN}${MBPKGARCH_VERSION}${MBPKGBARRELSHIFT}${MBPKGSPATTERNCOMPARE}${MBPKGREORDER}${MBPKGMATH}"
-
diff --git a/conf/machine/include/tune-microblaze.inc b/conf/machine/include/tune-microblaze.inc
index a5b6109e70..382d885e02 100644
--- a/conf/machine/include/tune-microblaze.inc
+++ b/conf/machine/include/tune-microblaze.inc
@@ -1,16 +1,11 @@
DEFAULTTUNE ?= "microblaze"
-require conf/machine/include/tune-microblaze-features.inc
+require conf/machine/include/microblaze/arch-microblaze.inc
-TUNEVALID[microblaze] = "Microblaze"
AVAILTUNES += "microblaze"
-
TUNE_FEATURES_tune-microblaze = "microblaze"
PACKAGE_EXTRA_ARCHS_tune-microblaze = "${TUNE_PKGARCH}"
-# override for architecture
-MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "microblaze", "microblaze:", "" ,d)}"
-
# Linux Configuration
KERNEL_IMAGETYPE ?= "linux.bin.ub"
--
2.11.0
More information about the meta-xilinx
mailing list