mirror of https://github.com/ARMmbed/mbed-os.git
Armc6 - Set floating point and CPU options for all core variants explicitly
Below are the options read from the toolchains/arm armclang --target=arm-arm-none-eabi -mcpu=list The following arguments to option 'mcpu' can be selected: -mcpu=cortex-m0 -mcpu=cortex-m0plus -mcpu=cortex-m1 -mcpu=cortex-m3 -mcpu=cortex-m4 -mcpu=cortex-m7 -mcpu=cortex-m23 -mcpu=cortex-m33 ... armlink --cpu=list The following arguments to option 'cpu' can be selected: --cpu=Cortex-M0 --cpu=Cortex-M0plus --cpu=Cortex-M1 --cpu=Cortex-M1.os_extension --cpu=Cortex-M1.no_os_extension --cpu=Cortex-M4 --cpu=Cortex-M4.no_fp --cpu=Cortex-M7 --cpu=Cortex-M7.fp.sp --cpu=Cortex-M7.no_fp --cpu=Cortex-M23 --cpu=Cortex-M33 --cpu=Cortex-M33.no_fp --cpu=Cortex-M33.no_dsp --cpu=Cortex-M33.no_dsp.no_fp ... armclang --target=arm-arm-none-eabi -mfpu=list The following arguments to option 'mfpu' can be selected: -mfpu=fpv4-sp-d16 -mfpu=fpv5-sp-d16 -mfpu=fpv5-d16 ...pull/9480/head
parent
907c517473
commit
c0750de318
|
@ -381,70 +381,67 @@ class ARMC6(ARM_STD):
|
||||||
if not set(("ARM", "ARMC6")).intersection(set(target.supported_toolchains)):
|
if not set(("ARM", "ARMC6")).intersection(set(target.supported_toolchains)):
|
||||||
raise NotSupportedException("ARM/ARMC6 compiler support is required for ARMC6 build")
|
raise NotSupportedException("ARM/ARMC6 compiler support is required for ARMC6 build")
|
||||||
|
|
||||||
if target.core.lower().endswith("fd"):
|
core = target.core
|
||||||
self.flags['common'].append("-mcpu=%s" % target.core.lower()[:-2])
|
|
||||||
self.flags['ld'].append("--cpu=%s" % target.core.lower()[:-2])
|
|
||||||
self.SHEBANG += " -mcpu=%s" % target.core.lower()[:-2]
|
|
||||||
elif target.core.lower().endswith("fd-ns"):
|
|
||||||
self.flags['common'].append("-mcpu=%s" % target.core.lower()[:-5])
|
|
||||||
self.flags['ld'].append("--cpu=%s" % target.core.lower()[:-5])
|
|
||||||
self.SHEBANG += " -mcpu=%s" % target.core.lower()[:-5]
|
|
||||||
elif target.core.lower().endswith("f"):
|
|
||||||
self.flags['common'].append("-mcpu=%s" % target.core.lower()[:-1])
|
|
||||||
self.flags['ld'].append("--cpu=%s" % target.core.lower()[:-1])
|
|
||||||
self.SHEBANG += " -mcpu=%s" % target.core.lower()[:-1]
|
|
||||||
elif target.core.startswith("Cortex-M33"):
|
|
||||||
self.flags['common'].append("-mcpu=cortex-m33+nodsp")
|
|
||||||
self.flags['common'].append("-mfpu=none")
|
|
||||||
self.flags['ld'].append("--cpu=Cortex-M33.no_dsp.no_fp")
|
|
||||||
elif not target.core.startswith("Cortex-M23"):
|
|
||||||
self.flags['common'].append("-mcpu=%s" % target.core.lower())
|
|
||||||
self.flags['ld'].append("--cpu=%s" % target.core.lower())
|
|
||||||
self.SHEBANG += " -mcpu=%s" % target.core.lower()
|
|
||||||
|
|
||||||
if target.core == "Cortex-M4F":
|
|
||||||
self.flags['common'].append("-mfpu=fpv4-sp-d16")
|
|
||||||
self.flags['common'].append("-mfloat-abi=hard")
|
|
||||||
elif target.core == "Cortex-M7F":
|
|
||||||
self.flags['common'].append("-mfpu=fpv5-sp-d16")
|
|
||||||
self.flags['common'].append("-mfloat-abi=hard")
|
|
||||||
elif target.core == "Cortex-M7FD":
|
|
||||||
self.flags['common'].append("-mfpu=fpv5-d16")
|
|
||||||
self.flags['common'].append("-mfloat-abi=hard")
|
|
||||||
elif target.core.startswith("Cortex-M23"):
|
|
||||||
self.flags['common'].append("-march=armv8-m.base")
|
|
||||||
elif target.core.startswith("Cortex-M33F"):
|
|
||||||
self.flags['common'].append("-mfpu=fpv5-sp-d16")
|
|
||||||
self.flags['common'].append("-mfloat-abi=hard")
|
|
||||||
|
|
||||||
if CORE_ARCH[target.core] == 8:
|
if CORE_ARCH[target.core] == 8:
|
||||||
# Add linking time preprocessor macro DOMAIN_NS
|
|
||||||
if target.core.endswith("-NS"):
|
|
||||||
define_string = self.make_ld_define("DOMAIN_NS", "0x1")
|
|
||||||
self.flags["ld"].append(define_string)
|
|
||||||
else:
|
|
||||||
# Add secure build flag
|
|
||||||
self.flags['cxx'].append("-mcmse")
|
|
||||||
self.flags['c'].append("-mcmse")
|
|
||||||
|
|
||||||
if (not target.core.endswith("-NS")) and kwargs.get('build_dir', False):
|
if (not target.core.endswith("-NS")) and kwargs.get('build_dir', False):
|
||||||
# Create Secure library
|
# Create Secure library
|
||||||
build_dir = kwargs['build_dir']
|
build_dir = kwargs['build_dir']
|
||||||
secure_file = join(build_dir, "cmse_lib.o")
|
secure_file = join(build_dir, "cmse_lib.o")
|
||||||
self.flags["ld"] += ["--import_cmse_lib_out=%s" % secure_file]
|
self.flags["ld"] += ["--import_cmse_lib_out=%s" % secure_file]
|
||||||
|
|
||||||
|
# Add linking time preprocessor macro DOMAIN_NS
|
||||||
|
if target.core.endswith("-NS"):
|
||||||
|
define_string = self.make_ld_define("DOMAIN_NS", "0x1")
|
||||||
|
self.flags["ld"].append(define_string)
|
||||||
|
core = target.core[:-3]
|
||||||
|
else:
|
||||||
|
# Add secure build flag
|
||||||
|
self.flags['cxx'].append("-mcmse")
|
||||||
|
self.flags['c'].append("-mcmse")
|
||||||
|
|
||||||
|
cpu = {
|
||||||
|
"Cortex-M0+": "cortex-m0plus",
|
||||||
|
"Cortex-M4F": "cortex-m4",
|
||||||
|
"Cortex-M7F": "cortex-m7",
|
||||||
|
"Cortex-M7FD": "cortex-m7",
|
||||||
|
"Cortex-M33": "cortex-m33+no_dsp+no_fp",
|
||||||
|
"Cortex-M33F": "cortex-m33+no_dsp",
|
||||||
|
"Cortex-M33FD": "cortex-m33"}.get(core, core)
|
||||||
|
|
||||||
|
cpu = cpu.lower()
|
||||||
|
self.flags['common'].append("-mcpu=%s" % cpu)
|
||||||
|
self.SHEBANG += " -mcpu=%s" % cpu
|
||||||
|
|
||||||
|
# FPU handling
|
||||||
|
if core == "Cortex-M4F":
|
||||||
|
self.flags['common'].append("-mfpu=fpv4-sp-d16")
|
||||||
|
self.flags['common'].append("-mfloat-abi=hard")
|
||||||
|
self.flags['ld'].append("--cpu=cortex-m4")
|
||||||
|
elif core == "Cortex-M7F":
|
||||||
|
self.flags['common'].append("-mfpu=fpv5-sp-d16")
|
||||||
|
self.flags['common'].append("-mfloat-abi=hard")
|
||||||
|
self.flags['ld'].append("--cpu=cortex-m7.fp.sp")
|
||||||
|
elif core == "Cortex-M7FD":
|
||||||
|
self.flags['common'].append("-mfpu=fpv5-d16")
|
||||||
|
self.flags['common'].append("-mfloat-abi=hard")
|
||||||
|
self.flags['ld'].append("--cpu=cortex-m7")
|
||||||
|
elif core == "Cortex-M33F":
|
||||||
|
self.flags['common'].append("-mfpu=fpv5-sp-d16")
|
||||||
|
self.flags['common'].append("-mfloat-abi=hard")
|
||||||
|
self.flags['ld'].append("--cpu=cortex-m33.no_dsp")
|
||||||
|
elif core == "Cortex-M33":
|
||||||
|
self.flags['ld'].append("--cpu=cortex-m33.no_dsp.no_fp")
|
||||||
|
else:
|
||||||
|
self.flags['ld'].append("--cpu=%s" % cpu)
|
||||||
|
|
||||||
asm_cpu = {
|
asm_cpu = {
|
||||||
"Cortex-M0+": "Cortex-M0",
|
"Cortex-M0+": "Cortex-M0",
|
||||||
"Cortex-M4F": "Cortex-M4.fp",
|
"Cortex-M4F": "Cortex-M4.fp",
|
||||||
"Cortex-M7F": "Cortex-M7.fp.sp",
|
"Cortex-M7F": "Cortex-M7.fp.sp",
|
||||||
"Cortex-M7FD": "Cortex-M7.fp.dp",
|
"Cortex-M7FD": "Cortex-M7.fp.dp",
|
||||||
"Cortex-M23-NS": "Cortex-M23",
|
|
||||||
"Cortex-M33": "Cortex-M33.no_dsp.no_fp",
|
"Cortex-M33": "Cortex-M33.no_dsp.no_fp",
|
||||||
"Cortex-M33-NS": "Cortex-M33.no_dsp.no_fp",
|
|
||||||
"Cortex-M33F": "Cortex-M33.no_dsp",
|
"Cortex-M33F": "Cortex-M33.no_dsp",
|
||||||
"Cortex-M33F-NS": "Cortex-M33.no_dsp",
|
"Cortex-M33FD": "Cortex-M33"}.get(core, core)
|
||||||
"Cortex-M33FD": "Cortex-M33",
|
|
||||||
"Cortex-M33FD-NS": "Cortex-M33"}.get(target.core, target.core)
|
|
||||||
|
|
||||||
self.flags['asm'].append("--cpu=%s" % asm_cpu)
|
self.flags['asm'].append("--cpu=%s" % asm_cpu)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue