2 # Copyright (c) 2013-2019, ARM Limited and Contributors. All rights reserved.
4 # SPDX-License-Identifier: BSD-3-Clause
7 include lib
/libfdt
/libfdt.mk
8 include lib
/xlat_tables_v2
/xlat_tables.mk
10 PLAT_INCLUDES
:= -Iplat
/rpi
/common
/include \
11 -Iplat
/rpi
/rpi4
/include
13 PLAT_BL_COMMON_SOURCES
:= drivers
/ti
/uart
/aarch64
/16550_console.S \
14 plat
/rpi
/common
/rpi3_common.c \
15 ${XLAT_TABLES_LIB_SRCS}
17 BL31_SOURCES
+= lib
/cpus
/aarch64
/cortex_a72.S \
18 plat
/rpi
/rpi4
/aarch64
/plat_helpers.S \
19 plat
/rpi
/rpi4
/aarch64
/armstub8_header.S \
20 drivers
/arm
/gic
/common
/gic_common.c \
21 drivers
/arm
/gic
/v2
/gicv2_helpers.c \
22 drivers
/arm
/gic
/v2
/gicv2_main.c \
23 plat
/common
/plat_gicv2.c \
24 plat
/rpi
/rpi4
/rpi4_bl31_setup.c \
25 plat
/rpi
/common
/rpi3_pm.c \
26 plat
/common
/plat_psci_common.c \
27 plat
/rpi
/common
/rpi3_topology.c \
30 # For now we only support BL31, using the kernel loaded by the GPU firmware.
33 # All CPUs enter armstub8.bin.
34 COLD_BOOT_SINGLE_CPU
:= 0
36 # Tune compiler for Cortex-A72
37 ifeq ($(notdir $(CC
)),armclang
)
38 TF_CFLAGS_aarch64
+= -mcpu
=cortex-a72
39 else ifneq ($(findstring clang
,$(notdir $(CC
))),)
40 TF_CFLAGS_aarch64
+= -mcpu
=cortex-a72
42 TF_CFLAGS_aarch64
+= -mtune
=cortex-a72
45 # Add support for platform supplied linker script for BL31 build
46 $(eval
$(call add_define
,PLAT_EXTRA_LD_SCRIPT
))
48 # Enable all errata workarounds for Cortex-A72
49 ERRATA_A72_859971
:= 1
51 WORKAROUND_CVE_2017_5715
:= 1
53 # Add new default target when compiling this platform
59 # Disable stack protector by default
60 ENABLE_STACK_PROTECTOR
:= 0
62 # Have different sections for code and rodata
63 SEPARATE_CODE_AND_RODATA
:= 1
68 # Platform build flags
69 # --------------------
71 # There is not much else than a Linux kernel to load at the moment.
72 RPI3_DIRECT_LINUX_BOOT
:= 1
74 # BL33 images are in AArch64 by default
75 RPI3_BL33_IN_AARCH32
:= 0
77 # UART to use at runtime. -1 means the runtime UART is disabled.
78 # Any other value means the default UART will be used.
79 RPI3_RUNTIME_UART
:= 0
81 # Use normal memory mapping for ROM, FIP, SRAM and DRAM
82 RPI3_USE_UEFI_MAP
:= 0
84 # Process platform flags
85 # ----------------------
87 $(eval
$(call add_define
,RPI3_BL33_IN_AARCH32
))
88 $(eval
$(call add_define
,RPI3_DIRECT_LINUX_BOOT
))
89 ifdef RPI3_PRELOADED_DTB_BASE
90 $(eval
$(call add_define
,RPI3_PRELOADED_DTB_BASE
))
92 $(eval
$(call add_define
,RPI3_RUNTIME_UART
))
93 $(eval
$(call add_define
,RPI3_USE_UEFI_MAP
))
95 ifeq (${ARCH},aarch32
)
96 $(error Error
: AArch32 not supported on rpi4
)
99 ifneq ($(ENABLE_STACK_PROTECTOR
), 0)
100 PLAT_BL_COMMON_SOURCES
+= drivers
/rpi3
/rng
/rpi3_rng.c \
101 plat
/rpi
/common
/rpi3_stack_protector.c