Skip to content
Snippets Groups Projects
Commit 6044eb57 authored by Pascal Brand's avatar Pascal Brand
Browse files

fvp: Introduce mixed compilation mode 32bits / 64bits


This patch introduce compilation mode 32bits / 64 bits independently
for every parts:
- COMPILE_NS_USER:   Non-Secure User
- COMPILE_NS_KERNEL: Non-Secure Kernel
- COMPILE_S_USER:    Secure User
- COMPILE_S_KERNEL:  Secure Kernel

This is used on FVP, the non-secure part being bits, but the secure
part can be specified as 32 or 64 bits (64bits by default).

Reviewed-by: default avatarJoakim Bech <joakim.bech@linaro.org>
Tested-by: Pascal Brand <pascal.brand@linaro.org> (QEMU)
Tested-by: Pascal Brand <pascal.brand@linaro.org> (FVP)
Signed-off-by: default avatarPascal Brand <pascal.brand@st.com>
parent bab50840
No related branches found
No related tags found
No related merge requests found
......@@ -26,6 +26,98 @@ OPTEE_TEST_OUT_PATH ?= $(ROOT)/optee_test/out
CCACHE ?= $(shell which ccache) # Don't remove this comment (space is needed)
################################################################################
# Check coherency of compilation mode
################################################################################
ifneq ($(COMPILE_NS_USER),)
ifeq ($(COMPILE_NS_KERNEL),)
$(error COMPILE_NS_KERNEL must be defined as COMPILE_NS_USER=$(COMPILE_NS_USER) is defined)
endif
ifeq (,$(filter $(COMPILE_NS_USER),32 64))
$(error COMPILE_NS_USER=$(COMPILE_NS_USER) - Should be 32 or 64)
endif
endif
ifneq ($(COMPILE_NS_KERNEL),)
ifeq ($(COMPILE_NS_USER),)
$(error COMPILE_NS_USER must be defined as COMPILE_NS_KERNEL=$(COMPILE_NS_KERNEL) is defined)
endif
ifeq (,$(filter $(COMPILE_NS_KERNEL),32 64))
$(error COMPILE_NS_KERNEL=$(COMPILE_NS_KERNEL) - Should be 32 or 64)
endif
endif
ifeq ($(COMPILE_NS_KERNEL),32)
ifneq ($(COMPILE_NS_USER),32)
$(error COMPILE_NS_USER=$(COMPILE_NS_USER) - Should be 32 as COMPILE_NS_KERNEL=$(COMPILE_NS_KERNEL))
endif
endif
ifneq ($(COMPILE_S_USER),)
ifeq ($(COMPILE_S_KERNEL),)
$(error COMPILE_S_KERNEL must be defined as COMPILE_S_USER=$(COMPILE_S_USER) is defined)
endif
ifeq (,$(filter $(COMPILE_S_USER),32 64))
$(error COMPILE_S_USER=$(COMPILE_S_USER) - Should be 32 or 64)
endif
endif
ifneq ($(COMPILE_S_KERNEL),)
OPTEE_OS_COMMON_EXTRA_FLAGS ?= O=out/arm
OPTEE_OS_BIN ?= $(OPTEE_OS_PATH)/out/arm/core/tee.bin
ifeq ($(COMPILE_S_USER),)
$(error COMPILE_S_USER must be defined as COMPILE_S_KERNEL=$(COMPILE_S_KERNEL) is defined)
endif
ifeq (,$(filter $(COMPILE_S_KERNEL),32 64))
$(error COMPILE_S_KERNEL=$(COMPILE_S_KERNEL) - Should be 32 or 64)
endif
endif
ifeq ($(COMPILE_S_KERNEL),32)
ifneq ($(COMPILE_S_USER),32)
$(error COMPILE_S_USER=$(COMPILE_S_USER) - Should be 32 as COMPILE_S_KERNEL=$(COMPILE_S_KERNEL))
endif
endif
################################################################################
# set the compiler when COMPILE_xxx are defined
################################################################################
ifeq ($(COMPILE_NS_USER),32)
CROSS_COMPILE_NS_USER ?= "$(CCACHE)$(AARCH32_CROSS_COMPILE)"
endif
ifeq ($(COMPILE_NS_USER),64)
CROSS_COMPILE_NS_USER ?= "$(CCACHE)$(AARCH64_CROSS_COMPILE)"
endif
ifeq ($(COMPILE_NS_KERNEL),32)
CROSS_COMPILE_NS_KERNEL ?= "$(CCACHE)$(AARCH32_CROSS_COMPILE)"
endif
ifeq ($(COMPILE_NS_KERNEL),64)
CROSS_COMPILE_NS_KERNEL ?= "$(CCACHE)$(AARCH64_CROSS_COMPILE)"
endif
ifeq ($(COMPILE_S_USER),32)
CROSS_COMPILE_S_USER ?= "$(CCACHE)$(AARCH32_CROSS_COMPILE)"
OPTEE_OS_TA_DEV_KIT_DIR ?= $(OPTEE_OS_PATH)/out/arm/export-ta_arm32
endif
ifeq ($(COMPILE_S_USER),64)
CROSS_COMPILE_S_USER ?= "$(CCACHE)$(AARCH64_CROSS_COMPILE)"
OPTEE_OS_TA_DEV_KIT_DIR ?= $(OPTEE_OS_PATH)/out/arm/export-ta_arm64
endif
ifeq ($(COMPILE_S_KERNEL),32)
CROSS_COMPILE_S_KERNEL ?= "$(CCACHE)$(AARCH32_CROSS_COMPILE)"
endif
ifeq ($(COMPILE_S_KERNEL),64)
CROSS_COMPILE_S_KERNEL ?= "$(CCACHE)$(AARCH64_CROSS_COMPILE)"
OPTEE_OS_COMMON_EXTRA_FLAGS += CFG_ARM64_core=y
endif
################################################################################
# defines, macros, configuration etc
################################################################################
......@@ -112,7 +204,9 @@ edk2-clean-common:
################################################################################
# OP-TEE
################################################################################
OPTEE_OS_COMMON_FLAGS ?= CROSS_COMPILE=$(CROSS_COMPILE_S_USER) \
OPTEE_OS_COMMON_FLAGS ?= \
$(OPTEE_OS_COMMON_EXTRA_FLAGS) \
CROSS_COMPILE=$(CROSS_COMPILE_S_USER) \
CROSS_COMPILE_core=$(CROSS_COMPILE_S_KERNEL) \
CROSS_COMPILE_ta_arm64=$(AARCH64_CROSS_COMPILE) \
CROSS_COMPILE_ta_arm32=$(AARCH32_CROSS_COMPILE) \
......@@ -122,8 +216,7 @@ OPTEE_OS_COMMON_FLAGS ?= CROSS_COMPILE=$(CROSS_COMPILE_S_USER) \
optee-os-common:
$(MAKE) -C $(OPTEE_OS_PATH) $(OPTEE_OS_COMMON_FLAGS)
# OPTEE_OS_CLEAN_COMMON_FLAGS can be defined in specific makefiles
# (hikey.mk,...) if necessary
OPTEE_OS_CLEAN_COMMON_FLAGS ?= $(OPTEE_OS_COMMON_EXTRA_FLAGS)
optee-os-clean-common: xtest-clean
$(MAKE) -C $(OPTEE_OS_PATH) $(OPTEE_OS_CLEAN_COMMON_FLAGS) clean
......@@ -159,6 +252,7 @@ XTEST_COMMON_FLAGS ?= CROSS_COMPILE_HOST=$(CROSS_COMPILE_NS_USER)\
CROSS_COMPILE_TA=$(CROSS_COMPILE_S_USER) \
TA_DEV_KIT_DIR=$(OPTEE_OS_TA_DEV_KIT_DIR) \
CFG_DEV_PATH=$(ROOT) \
COMPILE_NS_USER=$(COMPILE_NS_USER) \
O=$(OPTEE_TEST_OUT_PATH)
xtest-common: optee-os optee-client
......
DEBUG ?= 1
-include common.mk
################################################################################
# Mandatory definition to use common.mk
# Following variables defines how the NS_USER (Non Secure User - Client
# Application), NS_KERNEL (Non Secure Kernel), S_KERNEL (Secure Kernel) and
# S_USER (Secure User - TA) are compiled
################################################################################
CROSS_COMPILE_NS_USER ?= "$(CCACHE)$(AARCH64_CROSS_COMPILE)"
CROSS_COMPILE_NS_KERNEL ?= "$(CCACHE)$(AARCH64_CROSS_COMPILE)"
CROSS_COMPILE_S_USER ?= "$(CCACHE)$(AARCH64_CROSS_COMPILE)"
CROSS_COMPILE_S_KERNEL ?= "$(CCACHE)$(AARCH64_CROSS_COMPILE)"
OPTEE_OS_BIN ?= $(OPTEE_OS_PATH)/out/arm-plat-vexpress/core/tee.bin
OPTEE_OS_TA_DEV_KIT_DIR ?= $(OPTEE_OS_PATH)/out/arm-plat-vexpress/export-ta_arm64
COMPILE_NS_USER := 64
COMPILE_NS_KERNEL := 64
COMPILE_S_USER ?= 64
COMPILE_S_KERNEL ?= 64
-include common.mk
################################################################################
# Paths to git projects and various binaries
################################################################################
ARM_TF_PATH ?= $(ROOT)/arm-trusted-firmware
EDK2_PATH ?= $(ROOT)/edk2
EDK2_BIN ?= $(EDK2_PATH)/Build/ArmVExpress-FVP-AArch64/RELEASE_GCC49/FV/FVP_AARCH64_EFI.fd
FOUNDATION_PATH ?= $(ROOT)/Foundation_Platformpkg
ifeq ($(wildcard $(FOUNDATION_PATH)),)
$(error $(FOUNDATION_PATH) does not exist)
......@@ -112,7 +112,7 @@ linux-cleaner: linux-cleaner-common
################################################################################
# OP-TEE
################################################################################
OPTEE_OS_COMMON_FLAGS += PLATFORM=vexpress-fvp CFG_ARM64_core=y
OPTEE_OS_COMMON_FLAGS += PLATFORM=vexpress-fvp
optee-os: optee-os-common
OPTEE_OS_CLEAN_COMMON_FLAGS += PLATFORM=vexpress-fvp
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment