From e3d355481abf8aa6537d7351c6b485fe8a036257 Mon Sep 17 00:00:00 2001 From: Nathan Rossi Date: Sat, 14 Jan 2017 20:54:42 +1000 Subject: arch-microblaze.inc: Consolidate MicroBlaze tune features 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 --- .../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 00000000..9a5e685f --- /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 ca7e7e39..00000000 --- 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 5d010a4a..00000000 --- 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 4c8aa6d6..00000000 --- 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 bf2fe38b..00000000 --- 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 00000000..b2c7f071 --- /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 e3f8ae5f..00000000 --- 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 347fba79..00000000 --- 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 0d809ad1..00000000 --- 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 29463d2b..00000000 --- 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 a5b6109e..382d885e 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" -- cgit v1.2.3-54-g00ecf