mirror of https://github.com/ARMmbed/mbed-os.git
Correct some CPU selections in tools
* For ARMC6, core types `Cortex-M4` and `Cortex-M7` did not explicitly add `--fpu=none`, so it defaulted to assuming FPU present. This would cause a compilation error if the target's cmsis.h had `__FPU_PRESENT` defined to 0. * For GCC, `Cortex-M33FE` did not include `+dsp` in the architecture selection. * For ARMC5 and ARMC6, `Cortex-M0+` did not pass `M0plus` to the non-Clang tools.pull/10390/head
parent
beed42e666
commit
56e2d339c8
|
@ -82,16 +82,11 @@ class ARM(mbedToolchain):
|
|||
if "--library_type=microlib" not in self.flags['common']:
|
||||
self.flags['common'].append("--library_type=microlib")
|
||||
|
||||
if target.core == "Cortex-M0+":
|
||||
cpu = "Cortex-M0"
|
||||
elif target.core == "Cortex-M4F":
|
||||
cpu = "Cortex-M4.fp"
|
||||
elif target.core == "Cortex-M7FD":
|
||||
cpu = "Cortex-M7.fp.dp"
|
||||
elif target.core == "Cortex-M7F":
|
||||
cpu = "Cortex-M7.fp.sp"
|
||||
else:
|
||||
cpu = target.core
|
||||
cpu = {
|
||||
"Cortex-M0+": "Cortex-M0plus",
|
||||
"Cortex-M4F": "Cortex-M4.fp.sp",
|
||||
"Cortex-M7F": "Cortex-M7.fp.sp",
|
||||
"Cortex-M7FD": "Cortex-M7.fp.dp"}.get(target.core, target.core)
|
||||
|
||||
ARM_BIN = join(TOOLCHAIN_PATHS['ARM'], "bin")
|
||||
|
||||
|
@ -559,38 +554,31 @@ class ARMC6(ARM_STD):
|
|||
self.SHEBANG += " -mcpu=%s" % cpu
|
||||
|
||||
# FPU handling
|
||||
if core == "Cortex-M4F":
|
||||
if core == "Cortex-M4" or core == "Cortex-M7" or "core" == "Cortex-M33":
|
||||
self.flags['common'].append("-mfpu=none")
|
||||
elif 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":
|
||||
elif core == "Cortex-M7F" or core.startswith("Cortex-M33F"):
|
||||
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['common'].append("-mfpu=none")
|
||||
self.flags['ld'].append("--cpu=cortex-m33.no_dsp.no_fp")
|
||||
else:
|
||||
self.flags['ld'].append("--cpu=%s" % cpu)
|
||||
|
||||
asm_cpu = {
|
||||
"Cortex-M0+": "Cortex-M0",
|
||||
"Cortex-M4F": "Cortex-M4.fp",
|
||||
asm_ld_cpu = {
|
||||
"Cortex-M0+": "Cortex-M0plus",
|
||||
"Cortex-M4": "Cortex-M4.no_fp",
|
||||
"Cortex-M4F": "Cortex-M4",
|
||||
"Cortex-M7": "Cortex-M7.no_fp",
|
||||
"Cortex-M7F": "Cortex-M7.fp.sp",
|
||||
"Cortex-M7FD": "Cortex-M7.fp.dp",
|
||||
"Cortex-M7FD": "Cortex-M7",
|
||||
"Cortex-M33": "Cortex-M33.no_dsp.no_fp",
|
||||
"Cortex-M33F": "Cortex-M33.no_dsp",
|
||||
"Cortex-M33FE": "Cortex-M33"}.get(core, core)
|
||||
|
||||
self.flags['asm'].append("--cpu=%s" % asm_cpu)
|
||||
self.flags['asm'].append("--cpu=%s" % asm_ld_cpu)
|
||||
self.flags['ld'].append("--cpu=%s" % asm_ld_cpu)
|
||||
|
||||
self.cc = ([join(TOOLCHAIN_PATHS["ARMC6"], "armclang")] +
|
||||
self.flags['common'] + self.flags['c'])
|
||||
|
|
|
@ -78,11 +78,14 @@ class GCC(mbedToolchain):
|
|||
"Cortex-M4F": "cortex-m4",
|
||||
"Cortex-M7F": "cortex-m7",
|
||||
"Cortex-M7FD": "cortex-m7",
|
||||
"Cortex-M33": "cortex-m33+nodsp",
|
||||
"Cortex-M33F": "cortex-m33+nodsp",
|
||||
"Cortex-M33FE": "cortex-m33"}.get(core, core)
|
||||
|
||||
if core == "Cortex-M33":
|
||||
if cpu == "cortex-m33+nodsp":
|
||||
self.cpu.append("-march=armv8-m.main")
|
||||
elif cpu == "cortex-m33":
|
||||
self.cpu.append("-march=armv8-m.main+dsp")
|
||||
else:
|
||||
self.cpu.append("-mcpu={}".format(cpu.lower()))
|
||||
|
||||
|
@ -93,15 +96,12 @@ class GCC(mbedToolchain):
|
|||
if core == "Cortex-M4F":
|
||||
self.cpu.append("-mfpu=fpv4-sp-d16")
|
||||
self.cpu.append("-mfloat-abi=softfp")
|
||||
elif core == "Cortex-M7F":
|
||||
elif core == "Cortex-M7F" or core.startswith("Cortex-M33F"):
|
||||
self.cpu.append("-mfpu=fpv5-sp-d16")
|
||||
self.cpu.append("-mfloat-abi=softfp")
|
||||
elif core == "Cortex-M7FD":
|
||||
self.cpu.append("-mfpu=fpv5-d16")
|
||||
self.cpu.append("-mfloat-abi=softfp")
|
||||
elif core.startswith("Cortex-M33F"):
|
||||
self.cpu.append("-mfpu=fpv5-sp-d16")
|
||||
self.cpu.append("-mfloat-abi=softfp")
|
||||
|
||||
if target.core == "Cortex-A9":
|
||||
self.cpu.append("-mthumb-interwork")
|
||||
|
|
|
@ -69,8 +69,8 @@ class IAR(mbedToolchain):
|
|||
self.flags["ld"] += ["--import_cmse_lib_out=%s" % secure_file]
|
||||
|
||||
cpu = {
|
||||
"Cortex-M7FD": "Cortex-M7.fp.dp",
|
||||
"Cortex-M7F": "Cortex-M7.fp.sp",
|
||||
"Cortex-M7FD": "Cortex-M7.fp.dp",
|
||||
"Cortex-M33": "Cortex-M33.no_dsp",
|
||||
"Cortex-M33F": "Cortex-M33.fp.no_dsp",
|
||||
"Cortex-M33FE": "Cortex-M33.fp"}.get(core, core)
|
||||
|
|
Loading…
Reference in New Issue