From 9f4459cee160b8bf7ca39b69d223035c5635bbd3 Mon Sep 17 00:00:00 2001 From: Ayke van Laethem Date: Tue, 12 May 2020 20:45:58 +0200 Subject: [PATCH] arm: make FPU configuraton consistent Eventually we might want to start using the FPU, but the easy option right now is to simply disable it everywhere. Previously, it depended on whether Clang was built as part of TinyGo or it was an external binary. By setting the floating point mode explicitly, such inconsistencies are avoided. This commit creates a new cortex-m4 target which can be the central place for setting FPU-related settings across all Cortex-M4 chips. --- builder/library.go | 2 +- targets/atsamd51g19a.json | 4 +--- targets/atsamd51j19a.json | 4 +--- targets/atsamd51j20a.json | 4 +--- targets/cortex-m4.json | 8 ++++++++ targets/nrf52.json | 5 +---- targets/nrf52840.json | 5 +---- targets/stm32f4disco.json | 4 +--- 8 files changed, 15 insertions(+), 21 deletions(-) create mode 100644 targets/cortex-m4.json diff --git a/builder/library.go b/builder/library.go index d85e4d36..7bb506c7 100644 --- a/builder/library.go +++ b/builder/library.go @@ -69,7 +69,7 @@ func (l *Library) Load(target string) (path string, err error) { // Precalculate the flags to the compiler invocation. args := append(l.cflags(), "-c", "-Oz", "-g", "-ffunction-sections", "-fdata-sections", "-Wno-macro-redefined", "--target="+target, "-fdebug-prefix-map="+dir+"="+remapDir) if strings.HasPrefix(target, "arm") || strings.HasPrefix(target, "thumb") { - args = append(args, "-fshort-enums", "-fomit-frame-pointer") + args = append(args, "-fshort-enums", "-fomit-frame-pointer", "-mfloat-abi=soft") } if strings.HasPrefix(target, "riscv32-") { args = append(args, "-march=rv32imac", "-mabi=ilp32", "-fforce-enable-int128") diff --git a/targets/atsamd51g19a.json b/targets/atsamd51g19a.json index 59e2cd58..c3ac8160 100644 --- a/targets/atsamd51g19a.json +++ b/targets/atsamd51g19a.json @@ -1,9 +1,7 @@ { - "inherits": ["cortex-m"], - "llvm-target": "armv7em-none-eabi", + "inherits": ["cortex-m4"], "build-tags": ["atsamd51g19", "atsamd51", "sam"], "cflags": [ - "--target=armv7em-none-eabi", "-Qunused-arguments" ], "linkerscript": "targets/atsamd51.ld", diff --git a/targets/atsamd51j19a.json b/targets/atsamd51j19a.json index 9ddde66f..1bd42a0a 100644 --- a/targets/atsamd51j19a.json +++ b/targets/atsamd51j19a.json @@ -1,9 +1,7 @@ { - "inherits": ["cortex-m"], - "llvm-target": "armv7em-none-eabi", + "inherits": ["cortex-m4"], "build-tags": ["atsamd51j19", "atsamd51", "sam"], "cflags": [ - "--target=armv7em-none-eabi", "-Qunused-arguments" ], "linkerscript": "targets/atsamd51.ld", diff --git a/targets/atsamd51j20a.json b/targets/atsamd51j20a.json index cd8b431c..2089b5d6 100644 --- a/targets/atsamd51j20a.json +++ b/targets/atsamd51j20a.json @@ -1,9 +1,7 @@ { - "inherits": ["cortex-m"], - "llvm-target": "armv7em-none-eabi", + "inherits": ["cortex-m4"], "build-tags": ["sam", "atsamd51", "atsamd51j20", "atsamd51j20a"], "cflags": [ - "--target=armv7em-none-eabi", "-Qunused-arguments" ], "linkerscript": "targets/atsamd51j20a.ld", diff --git a/targets/cortex-m4.json b/targets/cortex-m4.json new file mode 100644 index 00000000..1d5ce2b1 --- /dev/null +++ b/targets/cortex-m4.json @@ -0,0 +1,8 @@ +{ + "inherits": ["cortex-m"], + "llvm-target": "armv7em-none-eabi", + "cflags": [ + "--target=armv7em-none-eabi", + "-mfloat-abi=soft" + ] +} diff --git a/targets/nrf52.json b/targets/nrf52.json index d48c9d33..58f42c29 100644 --- a/targets/nrf52.json +++ b/targets/nrf52.json @@ -1,10 +1,7 @@ { - "inherits": ["cortex-m"], - "llvm-target": "armv7em-none-eabi", + "inherits": ["cortex-m4"], "build-tags": ["nrf52", "nrf"], "cflags": [ - "--target=armv7em-none-eabi", - "-mfloat-abi=soft", "-Qunused-arguments", "-DNRF52832_XXAA", "-I{root}/lib/CMSIS/CMSIS/Include", diff --git a/targets/nrf52840.json b/targets/nrf52840.json index 2c2eff7c..4ab30a20 100644 --- a/targets/nrf52840.json +++ b/targets/nrf52840.json @@ -1,10 +1,7 @@ { - "inherits": ["cortex-m"], - "llvm-target": "armv7em-none-eabi", + "inherits": ["cortex-m4"], "build-tags": ["nrf52840", "nrf"], "cflags": [ - "--target=armv7em-none-eabi", - "-mfloat-abi=soft", "-Qunused-arguments", "-DNRF52840_XXAA", "-I{root}/lib/CMSIS/CMSIS/Include", diff --git a/targets/stm32f4disco.json b/targets/stm32f4disco.json index c142ab23..889d7c51 100644 --- a/targets/stm32f4disco.json +++ b/targets/stm32f4disco.json @@ -1,9 +1,7 @@ { - "inherits": ["cortex-m"], - "llvm-target": "armv7em-none-eabi", + "inherits": ["cortex-m4"], "build-tags": ["stm32f4disco", "stm32f407", "stm32"], "cflags": [ - "--target=armv7em-none-eabi", "-Qunused-arguments" ], "linkerscript": "targets/stm32f407.ld",