summaryrefslogtreecommitdiffstats
path: root/recipes-security/optee-imx/optee-os/0001-core-Define-section-attributes-for-clang.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-security/optee-imx/optee-os/0001-core-Define-section-attributes-for-clang.patch')
-rw-r--r--recipes-security/optee-imx/optee-os/0001-core-Define-section-attributes-for-clang.patch69
1 files changed, 34 insertions, 35 deletions
diff --git a/recipes-security/optee-imx/optee-os/0001-core-Define-section-attributes-for-clang.patch b/recipes-security/optee-imx/optee-os/0001-core-Define-section-attributes-for-clang.patch
index 8a9062f3..54fbe541 100644
--- a/recipes-security/optee-imx/optee-os/0001-core-Define-section-attributes-for-clang.patch
+++ b/recipes-security/optee-imx/optee-os/0001-core-Define-section-attributes-for-clang.patch
@@ -1,4 +1,4 @@
1From b73c3d2829d3661ca66b5cc6b4181f3bf973b13f Mon Sep 17 00:00:00 2001 1From ef83625c9a5f50610e25aa860c4b9c5e64723a66 Mon Sep 17 00:00:00 2001
2From: Emekcan Aras <emekcan.aras@arm.com> 2From: Emekcan Aras <emekcan.aras@arm.com>
3Date: Wed, 21 Dec 2022 10:55:58 +0000 3Date: Wed, 21 Dec 2022 10:55:58 +0000
4Subject: [PATCH 1/4] core: Define section attributes for clang 4Subject: [PATCH 1/4] core: Define section attributes for clang
@@ -36,15 +36,15 @@ Signed-off-by: Oleksandr Suvorov <oleksandr.suvorov@foundries.io>
36 core/arch/arm/kernel/thread.c | 19 +++++++++++++++-- 36 core/arch/arm/kernel/thread.c | 19 +++++++++++++++--
37 core/arch/arm/mm/core_mmu_lpae.c | 35 +++++++++++++++++++++++++++---- 37 core/arch/arm/mm/core_mmu_lpae.c | 35 +++++++++++++++++++++++++++----
38 core/arch/arm/mm/core_mmu_v7.c | 36 +++++++++++++++++++++++++++++--- 38 core/arch/arm/mm/core_mmu_v7.c | 36 +++++++++++++++++++++++++++++---
39 core/arch/arm/mm/pgt_cache.c | 12 ++++++++++-
40 core/kernel/thread.c | 13 +++++++++++- 39 core/kernel/thread.c | 13 +++++++++++-
40 core/mm/pgt_cache.c | 12 ++++++++++-
41 5 files changed, 104 insertions(+), 11 deletions(-) 41 5 files changed, 104 insertions(+), 11 deletions(-)
42 42
43diff --git a/core/arch/arm/kernel/thread.c b/core/arch/arm/kernel/thread.c 43diff --git a/core/arch/arm/kernel/thread.c b/core/arch/arm/kernel/thread.c
44index 22ef932f9..7a9078d2e 100644 44index 66833b3a0..b3eb9cf9a 100644
45--- a/core/arch/arm/kernel/thread.c 45--- a/core/arch/arm/kernel/thread.c
46+++ b/core/arch/arm/kernel/thread.c 46+++ b/core/arch/arm/kernel/thread.c
47@@ -44,15 +44,30 @@ static size_t thread_user_kcode_size __nex_bss; 47@@ -45,15 +45,30 @@ static size_t thread_user_kcode_size __nex_bss;
48 #if defined(CFG_CORE_UNMAP_CORE_AT_EL0) && \ 48 #if defined(CFG_CORE_UNMAP_CORE_AT_EL0) && \
49 defined(CFG_CORE_WORKAROUND_SPECTRE_BP_SEC) && defined(ARM64) 49 defined(CFG_CORE_WORKAROUND_SPECTRE_BP_SEC) && defined(ARM64)
50 long thread_user_kdata_sp_offset __nex_bss; 50 long thread_user_kdata_sp_offset __nex_bss;
@@ -78,10 +78,10 @@ index 22ef932f9..7a9078d2e 100644
78 78
79 #ifdef ARM32 79 #ifdef ARM32
80diff --git a/core/arch/arm/mm/core_mmu_lpae.c b/core/arch/arm/mm/core_mmu_lpae.c 80diff --git a/core/arch/arm/mm/core_mmu_lpae.c b/core/arch/arm/mm/core_mmu_lpae.c
81index 6df2c68cf..a877e4965 100644 81index 4c8b85e39..1885e1d3f 100644
82--- a/core/arch/arm/mm/core_mmu_lpae.c 82--- a/core/arch/arm/mm/core_mmu_lpae.c
83+++ b/core/arch/arm/mm/core_mmu_lpae.c 83+++ b/core/arch/arm/mm/core_mmu_lpae.c
84@@ -238,19 +238,46 @@ typedef uint16_t l1_idx_t; 84@@ -234,19 +234,46 @@ typedef uint16_t l1_idx_t;
85 typedef uint64_t base_xlat_tbls_t[CFG_TEE_CORE_NB_CORE][NUM_BASE_LEVEL_ENTRIES]; 85 typedef uint64_t base_xlat_tbls_t[CFG_TEE_CORE_NB_CORE][NUM_BASE_LEVEL_ENTRIES];
86 typedef uint64_t xlat_tbl_t[XLAT_TABLE_ENTRIES]; 86 typedef uint64_t xlat_tbl_t[XLAT_TABLE_ENTRIES];
87 87
@@ -133,7 +133,7 @@ index 6df2c68cf..a877e4965 100644
133 * TAs page table entry inside a level 1 page table. 133 * TAs page table entry inside a level 1 page table.
134 * 134 *
135diff --git a/core/arch/arm/mm/core_mmu_v7.c b/core/arch/arm/mm/core_mmu_v7.c 135diff --git a/core/arch/arm/mm/core_mmu_v7.c b/core/arch/arm/mm/core_mmu_v7.c
136index 58596be84..98fa58635 100644 136index 61e703da8..1960c08ca 100644
137--- a/core/arch/arm/mm/core_mmu_v7.c 137--- a/core/arch/arm/mm/core_mmu_v7.c
138+++ b/core/arch/arm/mm/core_mmu_v7.c 138+++ b/core/arch/arm/mm/core_mmu_v7.c
139@@ -204,16 +204,46 @@ typedef uint32_t l1_xlat_tbl_t[NUM_L1_ENTRIES]; 139@@ -204,16 +204,46 @@ typedef uint32_t l1_xlat_tbl_t[NUM_L1_ENTRIES];
@@ -186,35 +186,11 @@ index 58596be84..98fa58635 100644
186 186
187 struct mmu_partition { 187 struct mmu_partition {
188 l1_xlat_tbl_t *l1_table; 188 l1_xlat_tbl_t *l1_table;
189diff --git a/core/arch/arm/mm/pgt_cache.c b/core/arch/arm/mm/pgt_cache.c
190index 79553c6d2..b9efdf427 100644
191--- a/core/arch/arm/mm/pgt_cache.c
192+++ b/core/arch/arm/mm/pgt_cache.c
193@@ -410,8 +410,18 @@ void pgt_init(void)
194 * has a large alignment, while .bss has a small alignment. The current
195 * link script is optimized for small alignment in .bss
196 */
197+#ifdef __clang__
198+#pragma clang section bss=".nozi.mmu.l2"
199+#endif
200 static uint8_t pgt_tables[PGT_CACHE_SIZE][PGT_SIZE]
201- __aligned(PGT_SIZE) __section(".nozi.pgt_cache");
202+ __aligned(PGT_SIZE)
203+#ifndef __clang__
204+ __section(".nozi.pgt_cache")
205+#endif
206+ ;
207+#ifdef __clang__
208+#pragma clang section bss=""
209+#endif
210 size_t n;
211
212 for (n = 0; n < ARRAY_SIZE(pgt_tables); n++) {
213diff --git a/core/kernel/thread.c b/core/kernel/thread.c 189diff --git a/core/kernel/thread.c b/core/kernel/thread.c
214index e48294b3b..8de9064ca 100644 190index 2a1f22dce..5516b6771 100644
215--- a/core/kernel/thread.c 191--- a/core/kernel/thread.c
216+++ b/core/kernel/thread.c 192+++ b/core/kernel/thread.c
217@@ -38,13 +38,24 @@ struct thread_core_local thread_core_local[CFG_TEE_CORE_NB_CORE] __nex_bss; 193@@ -39,13 +39,24 @@ static uint32_t end_canary_value = 0xababab00;
218 name[stack_num][sizeof(name[stack_num]) / sizeof(uint32_t) - 1] 194 name[stack_num][sizeof(name[stack_num]) / sizeof(uint32_t) - 1]
219 #endif 195 #endif
220 196
@@ -240,7 +216,30 @@ index e48294b3b..8de9064ca 100644
240 #define GET_STACK(stack) ((vaddr_t)(stack) + STACK_SIZE(stack)) 216 #define GET_STACK(stack) ((vaddr_t)(stack) + STACK_SIZE(stack))
241 217
242 DECLARE_STACK(stack_tmp, CFG_TEE_CORE_NB_CORE, STACK_TMP_SIZE, 218 DECLARE_STACK(stack_tmp, CFG_TEE_CORE_NB_CORE, STACK_TMP_SIZE,
219diff --git a/core/mm/pgt_cache.c b/core/mm/pgt_cache.c
220index 79553c6d2..b9efdf427 100644
221--- a/core/mm/pgt_cache.c
222+++ b/core/mm/pgt_cache.c
223@@ -410,8 +410,18 @@ void pgt_init(void)
224 * has a large alignment, while .bss has a small alignment. The current
225 * link script is optimized for small alignment in .bss
226 */
227+#ifdef __clang__
228+#pragma clang section bss=".nozi.mmu.l2"
229+#endif
230 static uint8_t pgt_tables[PGT_CACHE_SIZE][PGT_SIZE]
231- __aligned(PGT_SIZE) __section(".nozi.pgt_cache");
232+ __aligned(PGT_SIZE)
233+#ifndef __clang__
234+ __section(".nozi.pgt_cache")
235+#endif
236+ ;
237+#ifdef __clang__
238+#pragma clang section bss=""
239+#endif
240 size_t n;
241
242 for (n = 0; n < ARRAY_SIZE(pgt_tables); n++) {
243-- 243--
2442.40.1 2442.43.2
245
246 245