Remove unsupported -mno-apcs-float -mthumb-interwork flags
[platform/core/security/tef-optee_os.git] / core / arch / arm / arm.mk
1 CFG_LTC_OPTEE_THREAD ?= y
2 # Size of emulated TrustZone protected SRAM, 360 kB.
3 # Only applicable when paging is enabled.
4 CFG_CORE_TZSRAM_EMUL_SIZE ?= 368640
5 CFG_LPAE_ADDR_SPACE_SIZE ?= (1ull << 32)
6
7 ifeq ($(CFG_ARM64_core),y)
8 CFG_KERN_LINKER_FORMAT ?= elf64-littleaarch64
9 CFG_KERN_LINKER_ARCH ?= aarch64
10 endif
11 ifeq ($(CFG_ARM32_core),y)
12 CFG_KERN_LINKER_FORMAT ?= elf32-littlearm
13 CFG_KERN_LINKER_ARCH ?= arm
14 endif
15
16 ifeq ($(CFG_TA_FLOAT_SUPPORT),y)
17 # Use hard-float for floating point support in user TAs instead of
18 # soft-float
19 CFG_WITH_VFP ?= y
20 ifeq ($(CFG_ARM64_core),y)
21 # AArch64 has no fallback to soft-float
22 $(call force,CFG_WITH_VFP,y)
23 endif
24 ifeq ($(CFG_WITH_VFP),y)
25 platform-hard-float-enabled := y
26 endif
27 endif
28
29 ifeq ($(CFG_WITH_PAGER),y)
30 ifeq ($(CFG_CORE_SANITIZE_KADDRESS),y)
31 $(error Error: CFG_CORE_SANITIZE_KADDRESS not compatible with CFG_WITH_PAGER)
32 endif
33 endif
34
35 ifeq ($(CFG_ARM32_core),y)
36 # Configration directive related to ARMv7 optee boot arguments.
37 # CFG_PAGEABLE_ADDR: if defined, forces pageable data physical address.
38 # CFG_NS_ENTRY_ADDR: if defined, forces NS World physical entry address.
39 # CFG_DT_ADDR:       if defined, forces Device Tree data physical address.
40 endif
41
42 core-platform-cppflags  += -I$(arch-dir)/include
43 core-platform-subdirs += \
44         $(addprefix $(arch-dir)/, kernel mm tee pta) $(platform-dir)
45
46 ifneq ($(CFG_WITH_ARM_TRUSTED_FW),y)
47 core-platform-subdirs += $(arch-dir)/sm
48 endif
49
50 arm64-platform-cppflags += -DARM64=1 -D__LP64__=1
51 arm32-platform-cppflags += -DARM32=1 -D__ILP32__=1
52
53 platform-cflags-generic ?= -g -ffunction-sections -fdata-sections -pipe
54 platform-aflags-generic ?= -g -pipe
55
56 arm32-platform-cflags-no-hard-float ?= -mfloat-abi=soft
57 arm32-platform-cflags-hard-float ?= -mfloat-abi=hard -funsafe-math-optimizations
58 arm32-platform-cflags-generic ?= -mthumb \
59                         -fno-short-enums -fno-common -mno-unaligned-access
60 arm32-platform-aflags-no-hard-float ?=
61
62 arm64-platform-cflags-no-hard-float ?= -mgeneral-regs-only
63 arm64-platform-cflags-hard-float ?=
64 arm64-platform-cflags-generic ?= -mstrict-align
65
66 ifeq ($(DEBUG),1)
67 platform-cflags-optimization ?=  -O0
68 else
69 platform-cflags-optimization ?=  -Os
70 endif
71
72 platform-cflags-debug-info ?= -g3
73 platform-aflags-debug-info ?=
74
75 core-platform-cflags += $(platform-cflags-optimization)
76 core-platform-cflags += $(platform-cflags-generic)
77 core-platform-cflags += $(platform-cflags-debug-info)
78
79 core-platform-aflags += $(platform-aflags-generic)
80 core-platform-aflags += $(platform-aflags-debug-info)
81
82 ifeq ($(CFG_ARM64_core),y)
83 arch-bits-core := 64
84 core-platform-cppflags += $(arm64-platform-cppflags)
85 core-platform-cflags += $(arm64-platform-cflags)
86 core-platform-cflags += $(arm64-platform-cflags-generic)
87 core-platform-cflags += $(arm64-platform-cflags-no-hard-float)
88 core-platform-aflags += $(arm64-platform-aflags)
89 else
90 arch-bits-core := 32
91 core-platform-cppflags += $(arm32-platform-cppflags)
92 core-platform-cflags += $(arm32-platform-cflags)
93 core-platform-cflags += $(arm32-platform-cflags-no-hard-float)
94 ifeq ($(CFG_CORE_UNWIND),y)
95 core-platform-cflags += -funwind-tables
96 endif
97 core-platform-cflags += $(arm32-platform-cflags-generic)
98 core-platform-aflags += $(core_arm32-platform-aflags)
99 core-platform-aflags += $(arm32-platform-aflags)
100 endif
101
102 ifneq ($(filter ta_arm32,$(ta-targets)),)
103 # Variables for ta-target/sm "ta_arm32"
104 CFG_ARM32_ta_arm32 := y
105 arch-bits-ta_arm32 := 32
106 ta_arm32-platform-cppflags += $(arm32-platform-cppflags)
107 ta_arm32-platform-cflags += $(arm32-platform-cflags)
108 ta_arm32-platform-cflags += $(platform-cflags-optimization)
109 ta_arm32-platform-cflags += $(platform-cflags-debug-info)
110 ta_arm32-platform-cflags += -fpie
111 ta_arm32-platform-cflags += $(arm32-platform-cflags-generic)
112 ifeq ($(platform-hard-float-enabled),y)
113 ta_arm32-platform-cflags += $(arm32-platform-cflags-hard-float)
114 else
115 ta_arm32-platform-cflags += $(arm32-platform-cflags-no-hard-float)
116 endif
117 ta_arm32-platform-aflags += $(platform-aflags-debug-info)
118 ta_arm32-platform-aflags += $(arm32-platform-aflags)
119
120 ta-mk-file-export-vars-ta_arm32 += CFG_ARM32_ta_arm32
121 ta-mk-file-export-vars-ta_arm32 += ta_arm32-platform-cppflags
122 ta-mk-file-export-vars-ta_arm32 += ta_arm32-platform-cflags
123 ta-mk-file-export-vars-ta_arm32 += ta_arm32-platform-aflags
124
125 ta-mk-file-export-add-ta_arm32 += CROSS_COMPILE32 ?= $$(CROSS_COMPILE)_nl_
126 ta-mk-file-export-add-ta_arm32 += CROSS_COMPILE_ta_arm32 ?= $$(CROSS_COMPILE32)_nl_
127 endif
128
129 ifneq ($(filter ta_arm64,$(ta-targets)),)
130 # Variables for ta-target/sm "ta_arm64"
131 CFG_ARM64_ta_arm64 := y
132 arch-bits-ta_arm64 := 64
133 ta_arm64-platform-cppflags += $(arm64-platform-cppflags)
134 ta_arm64-platform-cflags += $(arm64-platform-cflags)
135 ta_arm64-platform-cflags += $(platform-cflags-optimization)
136 ta_arm64-platform-cflags += $(platform-cflags-debug-info)
137 ta_arm64-platform-cflags += -fpie
138 ta_arm64-platform-cflags += $(arm64-platform-cflags-generic)
139 ifeq ($(platform-hard-float-enabled),y)
140 ta_arm64-platform-cflags += $(arm64-platform-cflags-hard-float)
141 else
142 ta_arm64-platform-cflags += $(arm64-platform-cflags-no-hard-float)
143 endif
144 ta_arm64-platform-aflags += $(platform-aflags-debug-info)
145 ta_arm64-platform-aflags += $(arm64-platform-aflags)
146
147 ta-mk-file-export-vars-ta_arm64 += CFG_ARM64_ta_arm64
148 ta-mk-file-export-vars-ta_arm64 += ta_arm64-platform-cppflags
149 ta-mk-file-export-vars-ta_arm64 += ta_arm64-platform-cflags
150 ta-mk-file-export-vars-ta_arm64 += ta_arm64-platform-aflags
151
152 ta-mk-file-export-add-ta_arm64 += CROSS_COMPILE64 ?= $$(CROSS_COMPILE)_nl_
153 ta-mk-file-export-add-ta_arm64 += CROSS_COMPILE_ta_arm64 ?= $$(CROSS_COMPILE64)_nl_
154 endif
155
156 # Set cross compiler prefix for each submodule
157 $(foreach sm, core $(ta-targets), $(eval CROSS_COMPILE_$(sm) ?= $(CROSS_COMPILE$(arch-bits-$(sm)))))