Add Broadcom's code for bcm63xx support
[project/bcm63xx/atf.git] / Makefile
index ecff944f749c7e6ad715185e853cf47fa6eb6913..fa7fb8c68b726ef8e6eb05c7e6607913c928bd38 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -8,7 +8,7 @@
 # Trusted Firmware Version
 #
 VERSION_MAJOR                  := 2
-VERSION_MINOR                  := 1
+VERSION_MINOR                  := 2
 
 # Default goal is build all images
 .DEFAULT_GOAL                  := all
@@ -141,6 +141,15 @@ else
         $(error Unknown BRANCH_PROTECTION value ${BRANCH_PROTECTION})
 endif
 
+# USE_SPINLOCK_CAS requires AArch64 build
+ifeq (${USE_SPINLOCK_CAS},1)
+ifneq (${ARCH},aarch64)
+        $(error USE_SPINLOCK_CAS requires AArch64)
+else
+        $(info USE_SPINLOCK_CAS is an experimental feature)
+endif
+endif
+
 ################################################################################
 # Toolchain
 ################################################################################
@@ -259,8 +268,9 @@ ifeq ($(findstring clang,$(notdir $(CC))),)
 # not using clang
 WARNINGS       +=              -Wunused-but-set-variable       \
                                -Wmaybe-uninitialized           \
-                               -Wpacked-bitfield-compat        \
-                               -Wshift-overflow=2
+                               -Wpacked-bitfield-compat
+# BRCM_PATCH: Conflicts with toolchain
+#                              -Wshift-overflow=2
 else
 # using clang
 WARNINGS       +=              -Wshift-overflow -Wshift-sign-overflow
@@ -274,10 +284,16 @@ CPPFLAGS          =       ${DEFINES} ${INCLUDES} ${MBEDTLS_INC} -nostdinc         \
                                -Wmissing-include-dirs $(ERRORS) $(WARNINGS)
 ASFLAGS                        +=      $(CPPFLAGS) $(ASFLAGS_$(ARCH))                  \
                                -ffreestanding -Wa,--fatal-warnings
+# BRCM_PATCH: Code optimization for Cortex-A9 brings instability
+ifeq ($(strip $(BRCM_CHIP)),63138)
+TF_CFLAGS              +=      $(CPPFLAGS) $(TF_CFLAGS_$(ARCH))                \
+                               -ffreestanding -fno-builtin -Wall -std=gnu99    \
+                               -O0 -ffunction-sections -fdata-sections
+else
 TF_CFLAGS              +=      $(CPPFLAGS) $(TF_CFLAGS_$(ARCH))                \
                                -ffreestanding -fno-builtin -Wall -std=gnu99    \
                                -Os -ffunction-sections -fdata-sections
-
+endif
 ifeq (${SANITIZE_UB},on)
 TF_CFLAGS              +=      -fsanitize=undefined -fno-sanitize-recover
 endif
@@ -355,7 +371,7 @@ INCLUDE_TBBR_MK             :=      1
 
 ifneq (${SPD},none)
 ifeq (${ARCH},aarch32)
-        $(error "Error: SPD is incompatible with AArch32.")
+#        $(error "Error: SPD is incompatible with AArch32.")
 endif
 ifdef EL3_PAYLOAD_BASE
         $(warning "SPD and EL3_PAYLOAD_BASE are incompatible build options.")
@@ -690,11 +706,16 @@ $(eval $(call assert_boolean,WARMBOOT_ENABLE_DCACHE_EARLY))
 $(eval $(call assert_boolean,BL2_AT_EL3))
 $(eval $(call assert_boolean,BL2_IN_XIP_MEM))
 $(eval $(call assert_boolean,BL2_INV_DCACHE))
+$(eval $(call assert_boolean,USE_SPINLOCK_CAS))
 
 $(eval $(call assert_numeric,ARM_ARCH_MAJOR))
 $(eval $(call assert_numeric,ARM_ARCH_MINOR))
 $(eval $(call assert_numeric,BRANCH_PROTECTION))
 
+ifdef KEY_SIZE
+        $(eval $(call assert_numeric,KEY_SIZE))
+endif
+
 ifeq ($(filter $(SANITIZE_UB), on off trap),)
         $(error "Invalid value for SANITIZE_UB: can be one of on, off, trap")
 endif
@@ -704,7 +725,9 @@ endif
 # This is done after including the platform specific makefile to allow the
 # platform to overwrite the default options
 ################################################################################
-
+# BRCM_PATCH: Need to add Broadcom SoC specific platform profiles
+$(eval $(call add_define,PLATFORM_FLAVOR_${BRCM_CHIP}))
+$(eval $(call add_define,_BCM9${BRCM_CHIP}_))
 $(eval $(call add_define,ARM_ARCH_MAJOR))
 $(eval $(call add_define,ARM_ARCH_MINOR))
 $(eval $(call add_define,COLD_BOOT_SINGLE_CPU))
@@ -751,6 +774,7 @@ $(eval $(call add_define,WARMBOOT_ENABLE_DCACHE_EARLY))
 $(eval $(call add_define,BL2_AT_EL3))
 $(eval $(call add_define,BL2_IN_XIP_MEM))
 $(eval $(call add_define,BL2_INV_DCACHE))
+$(eval $(call add_define,USE_SPINLOCK_CAS))
 
 ifeq (${SANITIZE_UB},trap)
         $(eval $(call add_define,MONITOR_TRAPS))