diff options
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.patch | 69 |
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 @@ | |||
1 | From b73c3d2829d3661ca66b5cc6b4181f3bf973b13f Mon Sep 17 00:00:00 2001 | 1 | From ef83625c9a5f50610e25aa860c4b9c5e64723a66 Mon Sep 17 00:00:00 2001 |
2 | From: Emekcan Aras <emekcan.aras@arm.com> | 2 | From: Emekcan Aras <emekcan.aras@arm.com> |
3 | Date: Wed, 21 Dec 2022 10:55:58 +0000 | 3 | Date: Wed, 21 Dec 2022 10:55:58 +0000 |
4 | Subject: [PATCH 1/4] core: Define section attributes for clang | 4 | Subject: [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 | ||
43 | diff --git a/core/arch/arm/kernel/thread.c b/core/arch/arm/kernel/thread.c | 43 | diff --git a/core/arch/arm/kernel/thread.c b/core/arch/arm/kernel/thread.c |
44 | index 22ef932f9..7a9078d2e 100644 | 44 | index 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 |
80 | diff --git a/core/arch/arm/mm/core_mmu_lpae.c b/core/arch/arm/mm/core_mmu_lpae.c | 80 | diff --git a/core/arch/arm/mm/core_mmu_lpae.c b/core/arch/arm/mm/core_mmu_lpae.c |
81 | index 6df2c68cf..a877e4965 100644 | 81 | index 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 | * |
135 | diff --git a/core/arch/arm/mm/core_mmu_v7.c b/core/arch/arm/mm/core_mmu_v7.c | 135 | diff --git a/core/arch/arm/mm/core_mmu_v7.c b/core/arch/arm/mm/core_mmu_v7.c |
136 | index 58596be84..98fa58635 100644 | 136 | index 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; |
189 | diff --git a/core/arch/arm/mm/pgt_cache.c b/core/arch/arm/mm/pgt_cache.c | ||
190 | index 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++) { | ||
213 | diff --git a/core/kernel/thread.c b/core/kernel/thread.c | 189 | diff --git a/core/kernel/thread.c b/core/kernel/thread.c |
214 | index e48294b3b..8de9064ca 100644 | 190 | index 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, |
219 | diff --git a/core/mm/pgt_cache.c b/core/mm/pgt_cache.c | ||
220 | index 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 | -- |
244 | 2.40.1 | 244 | 2.43.2 |
245 | |||
246 | 245 | ||