# MicroBlaze versions are defined as features, the features are setup to
|
# conflict with other versions as well as unavailable features for particular
|
# versions.
|
#
|
# Versions before v9.0 of MicroBlaze use a versioning scheme of "vX.YY.Z"
|
# (where Z = [abc]). For v8.* versions of MicroBlaze the revision (Z) changes
|
# did not affect ABI and are ignored by this tune configuration. Though this
|
# format is expected by GCC including the revision, but this is defaulted to
|
# ".a".
|
#
|
# Since v9.0 of MicroBlaze the revision (Z) part of versions was entirely
|
# dropped and the version scheme was changed to "vX.Y".
|
|
def microblaze_current_version(d, gcc = False):
|
import re
|
# find the current version, and convert it to major/minor integers
|
version = None
|
for t in (d.getVar("TUNE_FEATURES") or "").split():
|
m = re.search("^v(\d+)\.(\d+)", t)
|
if m:
|
version = int(m.group(1)), int(m.group(2))
|
break
|
|
# format the version string in generic or GCC specific formats
|
if version:
|
if version[0] <= 8:
|
return ("v%d.%02d" % version[0:2]) + (".a" if gcc else "")
|
else:
|
return "v%d.%d" % version[0:2]
|
return ""
|
|
# MicroBlaze versions
|
TUNEVALID[v8.00] = "MicroBlaze version 8.00"
|
TUNEVALID[v8.10] = "MicroBlaze version 8.10"
|
TUNEVALID[v8.20] = "MicroBlaze version 8.20"
|
TUNEVALID[v8.30] = "MicroBlaze version 8.30"
|
TUNEVALID[v8.40] = "MicroBlaze version 8.40"
|
TUNEVALID[v8.50] = "MicroBlaze version 8.50"
|
TUNEVALID[v9.0] = "MicroBlaze version 9.0"
|
TUNEVALID[v9.1] = "MicroBlaze version 9.1"
|
TUNEVALID[v9.2] = "MicroBlaze version 9.2"
|
TUNEVALID[v9.3] = "MicroBlaze version 9.3"
|
TUNEVALID[v9.4] = "MicroBlaze version 9.4"
|
TUNEVALID[v9.5] = "MicroBlaze version 9.5"
|
TUNEVALID[v9.6] = "MicroBlaze version 9.6"
|
TUNEVALID[v10.0] = "MicroBlaze version 10.0"
|
TUNEVALID[v11.0] = "MicroBlaze version 11.0"
|
|
# Version conflict matrix
|
TUNECONFLICTS[v8.00] = ""
|
TUNECONFLICTS[v8.10] = "v8.00"
|
TUNECONFLICTS[v8.20] = "v8.00 v8.10"
|
TUNECONFLICTS[v8.30] = "v8.00 v8.10 v8.20"
|
TUNECONFLICTS[v8.40] = "v8.00 v8.10 v8.20 v8.30"
|
TUNECONFLICTS[v8.50] = "v8.00 v8.10 v8.20 v8.30 v8.40"
|
TUNECONFLICTS[v9.0] = "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50"
|
TUNECONFLICTS[v9.1] = "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0"
|
TUNECONFLICTS[v9.2] = "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0 v9.1"
|
TUNECONFLICTS[v9.3] = "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0 v9.1 v9.2"
|
TUNECONFLICTS[v9.4] = "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0 v9.1 v9.2 v9.3"
|
TUNECONFLICTS[v9.5] = "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0 v9.1 v9.2 v9.3 v9.4"
|
TUNECONFLICTS[v9.6] = "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0 v9.1 v9.2 v9.3 v9.4 v9.5"
|
TUNECONFLICTS[v10.0] = "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0 v9.1 v9.2 v9.3 v9.4 v9.5 v9.6"
|
TUNECONFLICTS[v11.0] = "v8.00 v8.10 v8.20 v8.30 v8.40 v8.50 v9.0 v9.1 v9.2 v9.3 v9.4 v9.5 v9.6 v10.0"
|
|
# Version flags
|
TUNE_CCARGS += "${@'-mcpu=%s' % (microblaze_current_version(d, True)) if microblaze_current_version(d, True) != '' else ''}"
|
MBPKGARCH_VERSION = "${@'-%s' % (microblaze_current_version(d, True)) if microblaze_current_version(d, True) != '' else ''}"
|