blob: 3b9034e34e9445e206fd1581aa9bf375135efc7b [file] [log] [blame]
#
# arm64 makefile
#
# Authors: Andrew Jones <drjones@redhat.com>
#
bits = 64
ldarch = elf64-littleaarch64
arch_LDFLAGS = -pie -n
arch_LDFLAGS += -z notext
CFLAGS += -mstrict-align
sve_flag := $(call cc-option, -march=armv8.5-a+sve, "")
ifneq ($(strip $(sve_flag)),)
# Don't pass the option to the compiler, we don't
# want the compiler to generate SVE instructions.
CFLAGS += -DCC_HAS_SVE
endif
mno_outline_atomics := $(call cc-option, -mno-outline-atomics, "")
CFLAGS += $(mno_outline_atomics)
CFLAGS += -DCONFIG_RELOC
CFLAGS += -mgeneral-regs-only
define arch_elf_check =
$(if $(shell ! $(READELF) -rW $(1) >&/dev/null && echo "nok"),
$(error $(shell $(READELF) -rW $(1) 2>&1)))
$(if $(shell $(READELF) -rW $(1) | grep R_ | grep -v R_AARCH64_RELATIVE),
$(error $(1) has unsupported reloc types))
endef
cstart.o = $(TEST_DIR)/cstart64.o
cflatobjs += lib/arm64/stack.o
cflatobjs += lib/arm64/processor.o
cflatobjs += lib/arm64/spinlock.o
cflatobjs += lib/arm64/gic-v3-its.o lib/arm64/gic-v3-its-cmd.o
ifeq ($(CONFIG_EFI),y)
cflatobjs += lib/acpi.o
endif
OBJDIRS += lib/arm64
ifeq ($(CONFIG_EFI),y)
# avoid jump tables before all relocations have been processed
arm/efi/reloc_aarch64.o: CFLAGS += -fno-jump-tables
cflatobjs += arm/efi/reloc_aarch64.o
exe = efi
else
exe = flat
endif
# arm64 specific tests
tests = $(TEST_DIR)/timer.$(exe)
tests += $(TEST_DIR)/micro-bench.$(exe)
tests += $(TEST_DIR)/cache.$(exe)
tests += $(TEST_DIR)/debug.$(exe)
tests += $(TEST_DIR)/fpu.$(exe)
include $(SRCDIR)/$(TEST_DIR)/Makefile.common
arch_clean: arm_clean
$(RM) lib/arm64/.*.d