diff options
author | Travis Geiselbrecht <geist@foobox.com> | 2024-05-14 01:18:38 -0700 |
---|---|---|
committer | Travis Geiselbrecht <geist@foobox.com> | 2024-05-14 01:28:51 -0700 |
commit | 035739433ec664b1fa991ffa62f29da677a16e21 (patch) | |
tree | 60497cfcbbceff90518d2849c9eb374d721ea330 | |
parent | 1a761abb83fafd4dc6203ed4ffc9b61c4eb362a0 (diff) | |
download | lk-upstream-master.tar.gz |
[arch][arm] avoid using -mgeneral-regs-only for arm32upstream-master
For older compilers (gcc 7.5.0 in particular) avoid using
-mgeneral-regs-only to override the floating point switches, since it
doesn't seem to understand that switch.
Instead more properly add the floating point switches for a module or
source file compiled with float. More compatible with all compilers.
-rw-r--r-- | arch/arm/rules.mk | 10 | ||||
-rw-r--r-- | arch/arm/toolchain.mk | 20 |
2 files changed, 15 insertions, 15 deletions
diff --git a/arch/arm/rules.mk b/arch/arm/rules.mk index 1f4b2b16..53b48cb6 100644 --- a/arch/arm/rules.mk +++ b/arch/arm/rules.mk @@ -244,12 +244,14 @@ MODULE_SRCS += \ $(LOCAL_DIR)/arm/cache.c \ $(LOCAL_DIR)/arm/debug.c \ $(LOCAL_DIR)/arm/ops.S \ - $(LOCAL_DIR)/arm/exceptions.S \ $(LOCAL_DIR)/arm/faults.c \ - $(LOCAL_DIR)/arm/fpu.c \ $(LOCAL_DIR)/arm/mmu.c \ $(LOCAL_DIR)/arm/thread.c +MODULE_FLOAT_SRCS += \ + $(LOCAL_DIR)/arm/exceptions.S \ + $(LOCAL_DIR)/arm/fpu.c \ + MODULE_ARM_OVERRIDE_SRCS := \ $(LOCAL_DIR)/arm/arch.c @@ -333,8 +335,8 @@ TOOLCHAIN_PREFIX := $(ARCH_$(ARCH)_TOOLCHAIN_PREFIX) $(info TOOLCHAIN_PREFIX = $(TOOLCHAIN_PREFIX)) ARCH_COMPILEFLAGS += $(ARCH_$(ARCH)_COMPILEFLAGS) -ARCH_COMPILEFLAGS_NOFLOAT := -mgeneral-regs-only -ARCH_COMPILEFLAGS_FLOAT := +ARCH_COMPILEFLAGS_NOFLOAT := +ARCH_COMPILEFLAGS_FLOAT := $(ARCH_$(ARCH)_COMPILEFLAGS_FLOAT) GLOBAL_COMPILEFLAGS += $(THUMBINTERWORK) diff --git a/arch/arm/toolchain.mk b/arch/arm/toolchain.mk index 07f48719..f1e1a458 100644 --- a/arch/arm/toolchain.mk +++ b/arch/arm/toolchain.mk @@ -75,33 +75,31 @@ ARCH_arm_COMPILEFLAGS += -mcpu=cortex-m4 endif ifeq ($(ARM_CPU),cortex-m7-fpu-sp-d16) # use cortex-m4 for now until better general toolchain support -ARCH_arm_COMPILEFLAGS += -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp +ARCH_arm_COMPILEFLAGS += -mcpu=cortex-m4 +ARCH_arm_COMPILEFLAGS_FLOAT += -mfpu=fpv4-sp-d16 -mfloat-abi=softfp endif ifeq ($(ARM_CPU),cortex-m4f) -ARCH_arm_COMPILEFLAGS += -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp +ARCH_arm_COMPILEFLAGS += -mcpu=cortex-m4 +ARCH_arm_COMPILEFLAGS_FLOAT += -mfpu=fpv4-sp-d16 -mfloat-abi=softfp endif ifeq ($(ARM_CPU),cortex-a7) ARCH_arm_COMPILEFLAGS += -mcpu=$(ARM_CPU) -ARCH_arm_COMPILEFLAGS += -mfpu=vfpv3 -mfloat-abi=softfp +ARCH_arm_COMPILEFLAGS_FLOAT += -mfpu=vfpv3 -mfloat-abi=softfp endif ifeq ($(ARM_CPU),cortex-a8) ARCH_arm_COMPILEFLAGS += -mcpu=$(ARM_CPU) -ARCH_arm_COMPILEFLAGS += -mfpu=neon -mfloat-abi=softfp +ARCH_arm_COMPILEFLAGS_FLOAT += -mfpu=neon -mfloat-abi=softfp endif ifeq ($(ARM_CPU),cortex-a9) ARCH_arm_COMPILEFLAGS += -mcpu=$(ARM_CPU) endif ifeq ($(ARM_CPU),cortex-a9-neon) ARCH_arm_COMPILEFLAGS += -mcpu=cortex-a9 -# XXX cannot enable neon right now because compiler generates -# neon code for 64bit integer ops -ARCH_arm_COMPILEFLAGS += -mfpu=vfpv3 -mfloat-abi=softfp +ARCH_arm_COMPILEFLAGS_FLOAT += -mfpu=neon -mfloat-abi=softfp endif ifeq ($(ARM_CPU),cortex-a15) ARCH_arm_COMPILEFLAGS += -mcpu=$(ARM_CPU) -ifneq ($(ARM_WITHOUT_VFP_NEON),true) -ARCH_arm_COMPILEFLAGS += -mfpu=vfpv3 -mfloat-abi=softfp -endif +ARCH_arm_COMPILEFLAGS_FLOAT += -mfpu=neon -mfloat-abi=softfp endif ifeq ($(ARM_CPU),arm1136j-s) ARCH_arm_COMPILEFLAGS += -mcpu=$(ARM_CPU) @@ -113,7 +111,7 @@ ifeq ($(ARM_CPU),cortex-r4f) ARCH_arm_COMPILEFLAGS += -march=armv7-r ARCH_arm_COMPILEFLAGS += -mcpu=$(ARM_CPU) ARCH_arm_COMPILEFLAGS += -mbig-endian -ARCH_arm_COMPILEFLAGS += -mfpu=vfpv3-d16 -mfloat-abi=hard +ARCH_arm_COMPILEFLAGS_FLOAT += -mfpu=vfpv3-d16 -mfloat-abi=hard GLOBAL_MODULE_LDFLAGS += -EB endif ifeq ($(ARM_CPU),armemu) |