Commit fa6f774b authored by Alexei Fedorov's avatar Alexei Fedorov
Browse files

Allow setting compiler's target architecture



Change-Id: I56ea088f415bdb9077c385bd3450ff4b2cfa2eac
Signed-off-by: default avatarAlexei Fedorov <Alexei.Fedorov@arm.com>
parent c48d02ba
...@@ -147,26 +147,34 @@ target32-directive = -target arm-none-eabi ...@@ -147,26 +147,34 @@ target32-directive = -target arm-none-eabi
# Will set march32-directive from platform configuration # Will set march32-directive from platform configuration
else else
target32-directive = -target armv8a-none-eabi target32-directive = -target armv8a-none-eabi
# Set the compiler's target architecture profile based on ARM_ARCH_MINOR option
ifeq (${ARM_ARCH_MINOR},0)
march32-directive = -march=armv8-a march32-directive = -march=armv8-a
march64-directive = -march=armv8-a
else
march32-directive = -march=armv8.${ARM_ARCH_MINOR}-a
march64-directive = -march=armv8.${ARM_ARCH_MINOR}-a
endif
endif endif
ifneq ($(findstring armclang,$(notdir $(CC))),) ifneq ($(findstring armclang,$(notdir $(CC))),)
TF_CFLAGS_aarch32 = -target arm-arm-none-eabi $(march32-directive) TF_CFLAGS_aarch32 = -target arm-arm-none-eabi $(march32-directive)
TF_CFLAGS_aarch64 = -target aarch64-arm-none-eabi -march=armv8-a TF_CFLAGS_aarch64 = -target aarch64-arm-none-eabi $(march64-directive)
LD = $(LINKER) LD = $(LINKER)
AS = $(CC) -c -x assembler-with-cpp $(TF_CFLAGS_$(ARCH)) AS = $(CC) -c -x assembler-with-cpp $(TF_CFLAGS_$(ARCH))
CPP = $(CC) -E $(TF_CFLAGS_$(ARCH)) CPP = $(CC) -E $(TF_CFLAGS_$(ARCH))
PP = $(CC) -E $(TF_CFLAGS_$(ARCH)) PP = $(CC) -E $(TF_CFLAGS_$(ARCH))
else ifneq ($(findstring clang,$(notdir $(CC))),) else ifneq ($(findstring clang,$(notdir $(CC))),)
TF_CFLAGS_aarch32 = $(target32-directive) $(march32-directive) TF_CFLAGS_aarch32 = $(target32-directive) $(march32-directive)
TF_CFLAGS_aarch64 = -target aarch64-elf TF_CFLAGS_aarch64 = -target aarch64-elf $(march64-directive)
LD = $(LINKER) LD = $(LINKER)
AS = $(CC) -c -x assembler-with-cpp $(TF_CFLAGS_$(ARCH)) AS = $(CC) -c -x assembler-with-cpp $(TF_CFLAGS_$(ARCH))
CPP = $(CC) -E CPP = $(CC) -E
PP = $(CC) -E PP = $(CC) -E
else else
TF_CFLAGS_aarch32 = $(march32-directive) TF_CFLAGS_aarch32 = $(march32-directive)
TF_CFLAGS_aarch64 = -march=armv8-a TF_CFLAGS_aarch64 = $(march64-directive)
LD = $(LINKER) LD = $(LINKER)
endif endif
...@@ -182,15 +190,7 @@ TF_CFLAGS_aarch32 += -mno-unaligned-access ...@@ -182,15 +190,7 @@ TF_CFLAGS_aarch32 += -mno-unaligned-access
TF_CFLAGS_aarch64 += -mgeneral-regs-only -mstrict-align TF_CFLAGS_aarch64 += -mgeneral-regs-only -mstrict-align
ASFLAGS_aarch32 = $(march32-directive) ASFLAGS_aarch32 = $(march32-directive)
ASFLAGS_aarch64 = -march=armv8-a ASFLAGS_aarch64 = $(march64-directive)
# Set the compiler to ARMv8.3 mode so that it uses all the ARMv8.3-PAuth
# instructions. Keeping it in 8.0 would make the compiler emit
# backwards-compatible hint instructions, which needs more space.
ifeq (${ENABLE_PAUTH},1)
TF_CFLAGS_aarch64 += -march=armv8.3-a
ASFLAGS_aarch64 += -march=armv8.3-a
endif
WARNING1 := -Wextra WARNING1 := -Wextra
WARNING1 += -Wunused -Wno-unused-parameter WARNING1 += -Wunused -Wno-unused-parameter
......
...@@ -2521,7 +2521,7 @@ section lists the usage of Architecture Extensions, and build flags ...@@ -2521,7 +2521,7 @@ section lists the usage of Architecture Extensions, and build flags
controlling them. controlling them.
In general, and unless individually mentioned, the build options In general, and unless individually mentioned, the build options
``ARM_ARCH_MAJOR`` and ``ARM_ARCH_MINOR`` selects the Architecture Extension to ``ARM_ARCH_MAJOR`` and ``ARM_ARCH_MINOR`` select the Architecture Extension to
target when building TF-A. Subsequent Arm Architecture Extensions are backward target when building TF-A. Subsequent Arm Architecture Extensions are backward
compatible with previous versions. compatible with previous versions.
...@@ -2570,6 +2570,10 @@ Armv8.3-A ...@@ -2570,6 +2570,10 @@ Armv8.3-A
``CTX_INCLUDE_PAUTH_REGS`` to 1. This enables pointer authentication in BL1, ``CTX_INCLUDE_PAUTH_REGS`` to 1. This enables pointer authentication in BL1,
BL2, BL31, and the TSP if it is used. BL2, BL31, and the TSP if it is used.
If ``ARM_ARCH_MAJOR == 8`` and ``ARM_ARCH_MINOR >= 3`` the code footprint of
enabling PAuth is lower because the compiler will use the optimized
PAuth instructions rather than the backwards-compatible ones.
Armv7-A Armv7-A
~~~~~~~ ~~~~~~~
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment