1*4882a593Smuzhiyun# MicroBlaze architecture tune feature configuration 2*4882a593Smuzhiyun 3*4882a593Smuzhiyun# Architecture feature and override 4*4882a593SmuzhiyunTUNEVALID[microblaze] = "MicroBlaze" 5*4882a593SmuzhiyunMACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "microblaze", "microblaze:", "", d)}" 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun# 64-bit 8*4882a593SmuzhiyunTUNEVALID[64-bit] = "64-bit MicroBlaze" 9*4882a593SmuzhiyunTUNECONFLICTS[64-bit] = "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" 10*4882a593SmuzhiyunMACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "64-bit", "microblaze64:", "", d)}" 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun# Endian 13*4882a593SmuzhiyunTUNEVALID[bigendian] = "Use Microblaze Big Endian" 14*4882a593SmuzhiyunTUNECONFLICTS[bigendian] = "v10.0" 15*4882a593Smuzhiyun 16*4882a593SmuzhiyunMBPKGARCH_ENDIAN = "${@bb.utils.contains("TUNE_FEATURES", "bigendian", "eb", "el", d)}" 17*4882a593Smuzhiyun 18*4882a593SmuzhiyunTUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "bigendian", " -mbig-endian", " -mlittle-endian", d)}" 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun# General features 21*4882a593SmuzhiyunTUNEVALID[barrel-shift] = "Enable Hardware Barrel Shifter" 22*4882a593SmuzhiyunTUNEVALID[pattern-compare] = "Enable Pattern Compare Instructions" 23*4882a593SmuzhiyunTUNEVALID[reorder] = "Enable Reorder Instructions" 24*4882a593SmuzhiyunTUNECONFLICTS[reorder] = "v8.00 v8.10 v8.20" 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun# Core configuration tune optimizations 27*4882a593SmuzhiyunTUNEVALID[frequency-optimized] = "Enabling tuning for frequency optimized core (AREA_OPTIMIZED_2)" 28*4882a593SmuzhiyunTUNECONFLICTS[frequency-optimized] = "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" 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun# Feature compiler args 31*4882a593SmuzhiyunTUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "barrel-shift", " -mxl-barrel-shift", " -mno-xl-barrel-shift", d)}" 32*4882a593SmuzhiyunTUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "pattern-compare", " -mxl-pattern-compare", " -mno-xl-pattern-compare", d)}" 33*4882a593SmuzhiyunTUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "frequency-optimized", " -mxl-frequency", "", d)}" 34*4882a593SmuzhiyunTUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "64-bit", " -m64", "", d)}" 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun# Disable reorder for v8.30 if pattern-compare is not enabled 37*4882a593SmuzhiyunTUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "reorder", \ 38*4882a593Smuzhiyun bb.utils.contains("TUNE_FEATURES", "v8.30", \ 39*4882a593Smuzhiyun bb.utils.contains("TUNE_FEATURES", "pattern-compare", \ 40*4882a593Smuzhiyun " -mxl-reorder", " -mno-xl-reorder", d), \ 41*4882a593Smuzhiyun " -mxl-reorder", d), " -mno-xl-reorder", d)}" 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun# Feature package architecture formatting 44*4882a593SmuzhiyunMBPKGARCH_TUNE = "" 45*4882a593SmuzhiyunMBPKGARCH_TUNE .= "${@bb.utils.contains("TUNE_FEATURES", "barrel-shift", "-bs", "", d)}" 46*4882a593SmuzhiyunMBPKGARCH_TUNE .= "${@bb.utils.contains("TUNE_FEATURES", "pattern-compare", "-cmp", "", d)}" 47*4882a593SmuzhiyunMBPKGARCH_TUNE .= "${@bb.utils.contains("TUNE_FEATURES", "reorder", "-re", "", d)}" 48*4882a593SmuzhiyunMBPKGARCH_TUNE .= "${@bb.utils.contains("TUNE_FEATURES", "frequency-optimized", "-fo", "", d)}" 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun# Additional features 51*4882a593Smuzhiyunrequire conf/machine/include/microblaze/feature-microblaze-versions.inc 52*4882a593Smuzhiyunrequire conf/machine/include/microblaze/feature-microblaze-math.inc 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun# Architecture name, either 'microblaze' or 'microblazeel' depending on endianess 55*4882a593SmuzhiyunTUNE_ARCH = "microblaze${@bb.utils.contains("TUNE_FEATURES", "bigendian", "", "el", d)}" 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun# Add 64-bit to the PKGARCH if enabled. 58*4882a593SmuzhiyunMBPKGARCH_SIZE = "${@bb.utils.contains("TUNE_FEATURES", "64-bit", "64", "", d)}" 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun# Package Architecture formatting 61*4882a593SmuzhiyunTUNE_PKGARCH = "microblaze${MBPKGARCH_SIZE}${MBPKGARCH_ENDIAN}${MBPKGARCH_VERSION}${MBPKGARCH_TUNE}${MBPKGARCH_MATH}" 62*4882a593Smuzhiyun 63