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 d85e4d365..7bb506c76 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 59e2cd58c..c3ac81608 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 9ddde66fe..1bd42a0ad 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 cd8b431cb..2089b5d6e 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 000000000..1d5ce2b19 --- /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 d48c9d33c..58f42c29e 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 2c2eff7ca..4ab30a208 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 c142ab23b..889d7c513 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",