mirror of
https://git.yoctoproject.org/meta-arm
synced 2026-06-06 14:50:03 +00:00
optee-os: Extend clang pragma fixes to core_mmu_v7.c for 3.18
3.18 builds are failing since the section stuff is also done in core_mmu_v7.c therefore extend the patch to include this file as well Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Jon Mason <jon.mason@arm.com>
This commit is contained in:
+59
-61
@@ -1,4 +1,4 @@
|
||||
From 4ff172196d399217992110a47312c626954a844c Mon Sep 17 00:00:00 2001
|
||||
From f189457b79989543f65b8a4e8729eff2cdf9a758 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Sat, 13 Aug 2022 19:24:55 -0700
|
||||
Subject: [PATCH] core: Define section attributes for clang
|
||||
@@ -30,20 +30,16 @@ going and match the functionality with gcc.
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
---
|
||||
core/arch/arm/kernel/thread.c | 19 +++++++++++++++--
|
||||
core/arch/arm/mm/core_mmu_lpae.c | 35 ++++++++++++++++++++++++++++----
|
||||
core/arch/arm/mm/core_mmu_v7.c | 27 +++++++++++++++++++++---
|
||||
core/arch/arm/mm/pgt_cache.c | 12 ++++++++++-
|
||||
core/kernel/thread.c | 13 +++++++++++-
|
||||
5 files changed, 95 insertions(+), 11 deletions(-)
|
||||
4 files changed, 71 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/core/arch/arm/kernel/thread.c b/core/arch/arm/kernel/thread.c
|
||||
index f083b159..432983c8 100644
|
||||
--- a/core/arch/arm/kernel/thread.c
|
||||
+++ b/core/arch/arm/kernel/thread.c
|
||||
@@ -44,15 +44,30 @@ static size_t thread_user_kcode_size __nex_bss;
|
||||
@@ -44,16 +44,31 @@ static size_t thread_user_kcode_size __n
|
||||
#if defined(CFG_CORE_UNMAP_CORE_AT_EL0) && \
|
||||
defined(CFG_CORE_WORKAROUND_SPECTRE_BP_SEC) && defined(ARM64)
|
||||
long thread_user_kdata_sp_offset __nex_bss;
|
||||
@@ -66,18 +62,17 @@ index f083b159..432983c8 100644
|
||||
- __section(".nex_nozi.kdata_page");
|
||||
+ __section(".nex_nozi.kdata_page")
|
||||
#endif
|
||||
+#endif
|
||||
#endif
|
||||
+ ;
|
||||
+#endif
|
||||
+
|
||||
+/* reset BSS section to default ( .bss ) */
|
||||
+#ifdef __clang__
|
||||
+#pragma clang section bss=""
|
||||
#endif
|
||||
+#endif
|
||||
|
||||
#ifdef ARM32
|
||||
diff --git a/core/arch/arm/mm/core_mmu_lpae.c b/core/arch/arm/mm/core_mmu_lpae.c
|
||||
index 3f08eec6..e6dc9261 100644
|
||||
uint32_t __nostackcheck thread_get_exceptions(void)
|
||||
--- a/core/arch/arm/mm/core_mmu_lpae.c
|
||||
+++ b/core/arch/arm/mm/core_mmu_lpae.c
|
||||
@@ -233,19 +233,46 @@ typedef uint16_t l1_idx_t;
|
||||
@@ -131,53 +126,6 @@ index 3f08eec6..e6dc9261 100644
|
||||
/*
|
||||
* TAs page table entry inside a level 1 page table.
|
||||
*
|
||||
diff --git a/core/arch/arm/mm/core_mmu_v7.c b/core/arch/arm/mm/core_mmu_v7.c
|
||||
index cd85bd22..ee78e6ee 100644
|
||||
--- a/core/arch/arm/mm/core_mmu_v7.c
|
||||
+++ b/core/arch/arm/mm/core_mmu_v7.c
|
||||
@@ -204,16 +204,37 @@ typedef uint32_t l1_xlat_tbl_t[NUM_L1_ENTRIES];
|
||||
typedef uint32_t l2_xlat_tbl_t[NUM_L2_ENTRIES];
|
||||
typedef uint32_t ul1_xlat_tbl_t[NUM_UL1_ENTRIES];
|
||||
|
||||
+#ifdef __clang__
|
||||
+#pragma clang section bss=".nozi.mmu.l1"
|
||||
+#endif
|
||||
static l1_xlat_tbl_t main_mmu_l1_ttb
|
||||
- __aligned(L1_ALIGNMENT) __section(".nozi.mmu.l1");
|
||||
+ __aligned(L1_ALIGNMENT)
|
||||
+#ifndef __clang__
|
||||
+ __section(".nozi.mmu.l1")
|
||||
+#endif
|
||||
+;
|
||||
|
||||
/* L2 MMU tables */
|
||||
+#ifdef __clang__
|
||||
+#pragma clang section bss=".nozi.mmu.l2"
|
||||
+#endif
|
||||
static l2_xlat_tbl_t main_mmu_l2_ttb[MAX_XLAT_TABLES]
|
||||
- __aligned(L2_ALIGNMENT) __section(".nozi.mmu.l2");
|
||||
+ __aligned(L2_ALIGNMENT)
|
||||
+#ifndef __clang__
|
||||
+ __section(".nozi.mmu.l2")
|
||||
+#endif
|
||||
+;
|
||||
|
||||
/* MMU L1 table for TAs, one for each thread */
|
||||
+#ifdef __clang__
|
||||
+#pragma clang section bss=".nozi.mmu.ul1"
|
||||
+#endif
|
||||
static ul1_xlat_tbl_t main_mmu_ul1_ttb[CFG_NUM_THREADS]
|
||||
- __aligned(UL1_ALIGNMENT) __section(".nozi.mmu.ul1");
|
||||
+ __aligned(UL1_ALIGNMENT)
|
||||
+#ifndef __clang__
|
||||
+ __section(".nozi.mmu.ul1")
|
||||
+#endif
|
||||
+;
|
||||
|
||||
struct mmu_partition {
|
||||
l1_xlat_tbl_t *l1_table;
|
||||
diff --git a/core/arch/arm/mm/pgt_cache.c b/core/arch/arm/mm/pgt_cache.c
|
||||
index dee1d207..382cae1c 100644
|
||||
--- a/core/arch/arm/mm/pgt_cache.c
|
||||
+++ b/core/arch/arm/mm/pgt_cache.c
|
||||
@@ -104,8 +104,18 @@ void pgt_init(void)
|
||||
@@ -200,11 +148,9 @@ index dee1d207..382cae1c 100644
|
||||
size_t n;
|
||||
|
||||
for (n = 0; n < ARRAY_SIZE(pgt_tables); n++) {
|
||||
diff --git a/core/kernel/thread.c b/core/kernel/thread.c
|
||||
index 18d34e6a..086129e2 100644
|
||||
--- a/core/kernel/thread.c
|
||||
+++ b/core/kernel/thread.c
|
||||
@@ -37,13 +37,24 @@ struct thread_core_local thread_core_local[CFG_TEE_CORE_NB_CORE] __nex_bss;
|
||||
@@ -37,13 +37,24 @@ struct thread_core_local thread_core_loc
|
||||
name[stack_num][sizeof(name[stack_num]) / sizeof(uint32_t) - 1]
|
||||
#endif
|
||||
|
||||
@@ -230,3 +176,55 @@ index 18d34e6a..086129e2 100644
|
||||
#define GET_STACK(stack) ((vaddr_t)(stack) + STACK_SIZE(stack))
|
||||
|
||||
DECLARE_STACK(stack_tmp, CFG_TEE_CORE_NB_CORE,
|
||||
--- a/core/arch/arm/mm/core_mmu_v7.c
|
||||
+++ b/core/arch/arm/mm/core_mmu_v7.c
|
||||
@@ -204,16 +204,46 @@ typedef uint32_t l1_xlat_tbl_t[NUM_L1_EN
|
||||
typedef uint32_t l2_xlat_tbl_t[NUM_L2_ENTRIES];
|
||||
typedef uint32_t ul1_xlat_tbl_t[NUM_UL1_ENTRIES];
|
||||
|
||||
+#ifdef __clang__
|
||||
+#pragma clang section bss=".nozi.mmu.l1"
|
||||
+#endif
|
||||
static l1_xlat_tbl_t main_mmu_l1_ttb
|
||||
- __aligned(L1_ALIGNMENT) __section(".nozi.mmu.l1");
|
||||
+ __aligned(L1_ALIGNMENT)
|
||||
+#ifndef __clang__
|
||||
+ __section(".nozi.mmu.l1")
|
||||
+#endif
|
||||
+;
|
||||
+#ifdef __clang__
|
||||
+#pragma clang section bss=""
|
||||
+#endif
|
||||
|
||||
/* L2 MMU tables */
|
||||
+#ifdef __clang__
|
||||
+#pragma clang section bss=".nozi.mmu.l2"
|
||||
+#endif
|
||||
static l2_xlat_tbl_t main_mmu_l2_ttb[MAX_XLAT_TABLES]
|
||||
- __aligned(L2_ALIGNMENT) __section(".nozi.mmu.l2");
|
||||
+ __aligned(L2_ALIGNMENT)
|
||||
+#ifndef __clang__
|
||||
+ __section(".nozi.mmu.l2")
|
||||
+#endif
|
||||
+;
|
||||
+#ifdef __clang__
|
||||
+#pragma clang section bss=""
|
||||
+#endif
|
||||
|
||||
/* MMU L1 table for TAs, one for each thread */
|
||||
+#ifdef __clang__
|
||||
+#pragma clang section bss=".nozi.mmu.ul1"
|
||||
+#endif
|
||||
static ul1_xlat_tbl_t main_mmu_ul1_ttb[CFG_NUM_THREADS]
|
||||
- __aligned(UL1_ALIGNMENT) __section(".nozi.mmu.ul1");
|
||||
+ __aligned(UL1_ALIGNMENT)
|
||||
+#ifndef __clang__
|
||||
+ __section(".nozi.mmu.ul1")
|
||||
+#endif
|
||||
+;
|
||||
+#ifdef __clang__
|
||||
+#pragma clang section bss=""
|
||||
+#endif
|
||||
|
||||
struct mmu_partition {
|
||||
l1_xlat_tbl_t *l1_table;
|
||||
|
||||
Reference in New Issue
Block a user