SPM: Add Macros of checking Partition attributes
This patch adds two Macros for checking Partition attributes:
- IS_PARTITION_PSA_ROT
- IS_PARTITION_IPC_MODEL
Change-Id: If4e843d7b68fc343273ab51cdf8ea1bae4b92000
Signed-off-by: Kevin Peng <kevin.peng@arm.com>
diff --git a/platform/ext/target/arm/corstone1000/tfm_hal_isolation.c b/platform/ext/target/arm/corstone1000/tfm_hal_isolation.c
index 3ec4a14..8cb0895 100644
--- a/platform/ext/target/arm/corstone1000/tfm_hal_isolation.c
+++ b/platform/ext/target/arm/corstone1000/tfm_hal_isolation.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020-2021, Arm Limited. All rights reserved.
+ * Copyright (c) 2020-2022, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -148,7 +148,7 @@
#if TFM_LVL == 1
privileged = true;
#else
- privileged = !!(p_ldinf->flags & PARTITION_MODEL_PSA_ROT);
+ privileged = IS_PARTITION_PSA_ROT(p_ldinf);
#endif
*pp_boundaries = (void *)(((uint32_t)privileged) & HANDLE_ATTR_PRIV_MASK);
diff --git a/platform/ext/target/arm/mps2/an519/tfm_hal_isolation.c b/platform/ext/target/arm/mps2/an519/tfm_hal_isolation.c
index 1f12169..1759d86 100644
--- a/platform/ext/target/arm/mps2/an519/tfm_hal_isolation.c
+++ b/platform/ext/target/arm/mps2/an519/tfm_hal_isolation.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020-2021, Arm Limited. All rights reserved.
+ * Copyright (c) 2020-2022, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -162,7 +162,7 @@
#if TFM_LVL == 1
privileged = true;
#else
- privileged = !!(p_ldinf->flags & PARTITION_MODEL_PSA_ROT);
+ privileged = IS_PARTITION_PSA_ROT(p_ldinf);
#endif
p_asset = (const struct asset_desc_t *)LOAD_INFO_ASSET(p_ldinf);
diff --git a/platform/ext/target/arm/mps2/an521/tfm_hal_isolation.c b/platform/ext/target/arm/mps2/an521/tfm_hal_isolation.c
index 731aabb..16cb768 100644
--- a/platform/ext/target/arm/mps2/an521/tfm_hal_isolation.c
+++ b/platform/ext/target/arm/mps2/an521/tfm_hal_isolation.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020-2021, Arm Limited. All rights reserved.
+ * Copyright (c) 2020-2022, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -241,7 +241,7 @@
#if TFM_LVL == 1
privileged = true;
#else
- privileged = !!(p_ldinf->flags & PARTITION_MODEL_PSA_ROT);
+ privileged = IS_PARTITION_PSA_ROT(p_ldinf);
#endif
p_asset = (const struct asset_desc_t *)LOAD_INFO_ASSET(p_ldinf);
diff --git a/platform/ext/target/arm/mps3/an524/tfm_hal_isolation.c b/platform/ext/target/arm/mps3/an524/tfm_hal_isolation.c
index 8655a40..0838290 100644
--- a/platform/ext/target/arm/mps3/an524/tfm_hal_isolation.c
+++ b/platform/ext/target/arm/mps3/an524/tfm_hal_isolation.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020-2021, Arm Limited. All rights reserved.
+ * Copyright (c) 2020-2022, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -167,7 +167,7 @@
#if TFM_LVL == 1
privileged = true;
#else
- privileged = !!(p_ldinf->flags & PARTITION_MODEL_PSA_ROT);
+ privileged = IS_PARTITION_PSA_ROT(p_ldinf);
#endif
p_asset = (const struct asset_desc_t *)LOAD_INFO_ASSET(p_ldinf);
diff --git a/platform/ext/target/arm/mps3/an547/tfm_hal_isolation.c b/platform/ext/target/arm/mps3/an547/tfm_hal_isolation.c
index d7b6d35..7e5d85c 100644
--- a/platform/ext/target/arm/mps3/an547/tfm_hal_isolation.c
+++ b/platform/ext/target/arm/mps3/an547/tfm_hal_isolation.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020-2021, Arm Limited. All rights reserved.
+ * Copyright (c) 2020-2022, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -182,7 +182,7 @@
#if TFM_LVL == 1
privileged = true;
#else
- privileged = !!(p_ldinf->flags & PARTITION_MODEL_PSA_ROT);
+ privileged = IS_PARTITION_PSA_ROT(p_ldinf);
#endif
p_asset = (const struct asset_desc_t *)LOAD_INFO_ASSET(p_ldinf);
diff --git a/platform/ext/target/arm/mps3/an552/tfm_hal_isolation.c b/platform/ext/target/arm/mps3/an552/tfm_hal_isolation.c
index 00a1a9d..a094ac5 100644
--- a/platform/ext/target/arm/mps3/an552/tfm_hal_isolation.c
+++ b/platform/ext/target/arm/mps3/an552/tfm_hal_isolation.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020-2021, Arm Limited. All rights reserved.
+ * Copyright (c) 2020-2022, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -182,7 +182,7 @@
#if TFM_LVL == 1
privileged = true;
#else
- privileged = !!(p_ldinf->flags & PARTITION_MODEL_PSA_ROT);
+ privileged = IS_PARTITION_PSA_ROT(p_ldinf);
#endif
p_asset = (const struct asset_desc_t *)LOAD_INFO_ASSET(p_ldinf);
diff --git a/platform/ext/target/arm/mps3/corstone_polaris/tfm_hal_isolation.c b/platform/ext/target/arm/mps3/corstone_polaris/tfm_hal_isolation.c
index 102d373..657e725 100644
--- a/platform/ext/target/arm/mps3/corstone_polaris/tfm_hal_isolation.c
+++ b/platform/ext/target/arm/mps3/corstone_polaris/tfm_hal_isolation.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020-2021, Arm Limited. All rights reserved.
+ * Copyright (c) 2020-2022, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -182,7 +182,7 @@
#if TFM_LVL == 1
privileged = true;
#else
- privileged = !!(p_ldinf->flags & PARTITION_MODEL_PSA_ROT);
+ privileged = IS_PARTITION_PSA_ROT(p_ldinf);
#endif
p_asset = (const struct asset_desc_t *)LOAD_INFO_ASSET(p_ldinf);
diff --git a/platform/ext/target/arm/musca_b1/sse_200/tfm_hal_isolation.c b/platform/ext/target/arm/musca_b1/sse_200/tfm_hal_isolation.c
index 83a72d3..d59e93b 100644
--- a/platform/ext/target/arm/musca_b1/sse_200/tfm_hal_isolation.c
+++ b/platform/ext/target/arm/musca_b1/sse_200/tfm_hal_isolation.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020-2021, Arm Limited. All rights reserved.
+ * Copyright (c) 2020-2022, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -255,7 +255,7 @@
#if TFM_LVL == 1
privileged = true;
#else
- privileged = !!(p_ldinf->flags & PARTITION_MODEL_PSA_ROT);
+ privileged = IS_PARTITION_PSA_ROT(p_ldinf);
#endif
p_asset = (const struct asset_desc_t *)LOAD_INFO_ASSET(p_ldinf);
diff --git a/platform/ext/target/arm/musca_s1/tfm_hal_isolation.c b/platform/ext/target/arm/musca_s1/tfm_hal_isolation.c
index 558c7c6..207a2bb 100644
--- a/platform/ext/target/arm/musca_s1/tfm_hal_isolation.c
+++ b/platform/ext/target/arm/musca_s1/tfm_hal_isolation.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020-2021, Arm Limited. All rights reserved.
+ * Copyright (c) 2020-2022, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -171,7 +171,7 @@
#if TFM_LVL == 1
privileged = true;
#else
- privileged = !!(p_ldinf->flags & PARTITION_MODEL_PSA_ROT);
+ privileged = IS_PARTITION_PSA_ROT(p_ldinf);
#endif
p_asset = (const struct asset_desc_t *)LOAD_INFO_ASSET(p_ldinf);
diff --git a/platform/ext/target/cypress/psoc64/tfm_hal_isolation.c b/platform/ext/target/cypress/psoc64/tfm_hal_isolation.c
index b83f0c0..6e517fd 100644
--- a/platform/ext/target/cypress/psoc64/tfm_hal_isolation.c
+++ b/platform/ext/target/cypress/psoc64/tfm_hal_isolation.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020-2021, Arm Limited. All rights reserved.
+ * Copyright (c) 2020-2022, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -75,7 +75,7 @@
#if TFM_LVL == 1
privileged = true;
#else
- privileged = !!(p_ldinf->flags & PARTITION_MODEL_PSA_ROT);
+ privileged = IS_PARTITION_PSA_ROT(p_ldinf);
#endif
p_asset = (const struct asset_desc_t *)LOAD_INFO_ASSET(p_ldinf);
diff --git a/platform/ext/target/nordic_nrf/common/core/tfm_hal_isolation.c b/platform/ext/target/nordic_nrf/common/core/tfm_hal_isolation.c
index e72b598..f6820b9 100644
--- a/platform/ext/target/nordic_nrf/common/core/tfm_hal_isolation.c
+++ b/platform/ext/target/nordic_nrf/common/core/tfm_hal_isolation.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020-2021, Arm Limited. All rights reserved.
+ * Copyright (c) 2020-2022, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -72,7 +72,7 @@
#if TFM_LVL == 1
privileged = true;
#else
- privileged = !!(p_ldinf->flags & PARTITION_MODEL_PSA_ROT);
+ privileged = IS_PARTITION_PSA_ROT(p_ldinf);
#endif
*pp_boundaries = (void *)(((uint32_t)privileged) & HANDLE_ATTR_PRIV_MASK);
diff --git a/platform/ext/target/nxp/common/tfm_hal_isolation.c b/platform/ext/target/nxp/common/tfm_hal_isolation.c
index 0737966..3f1f0c2 100644
--- a/platform/ext/target/nxp/common/tfm_hal_isolation.c
+++ b/platform/ext/target/nxp/common/tfm_hal_isolation.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020-2021, Arm Limited. All rights reserved.
+ * Copyright (c) 2020-2022, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -301,7 +301,7 @@
#if TFM_LVL == 1
privileged = true;
#else
- privileged = !!(p_ldinf->flags & PARTITION_MODEL_PSA_ROT);
+ privileged = IS_PARTITION_PSA_ROT(p_ldinf);
#endif
p_asset = (const struct asset_desc_t *)LOAD_INFO_ASSET(p_ldinf);
/*
diff --git a/platform/ext/target/stm/common/stm32l5xx/secure/tfm_hal_isolation.c b/platform/ext/target/stm/common/stm32l5xx/secure/tfm_hal_isolation.c
index 751bd01..4f9095d 100644
--- a/platform/ext/target/stm/common/stm32l5xx/secure/tfm_hal_isolation.c
+++ b/platform/ext/target/stm/common/stm32l5xx/secure/tfm_hal_isolation.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020-2021, Arm Limited. All rights reserved.
+ * Copyright (c) 2020-2022, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -244,7 +244,7 @@
#if TFM_LVL == 1
privileged = true;
#else
- privileged = !!(p_ldinf->flags & PARTITION_MODEL_PSA_ROT);
+ privileged = IS_PARTITION_PSA_ROT(p_ldinf);
#endif
p_asset = (const struct asset_desc_t *)LOAD_INFO_ASSET(p_ldinf);
diff --git a/platform/ext/target/stm/common/stm32u5xx/secure/tfm_hal_isolation.c b/platform/ext/target/stm/common/stm32u5xx/secure/tfm_hal_isolation.c
index 42e701f..b76d8e9 100644
--- a/platform/ext/target/stm/common/stm32u5xx/secure/tfm_hal_isolation.c
+++ b/platform/ext/target/stm/common/stm32u5xx/secure/tfm_hal_isolation.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020-2021, Arm Limited. All rights reserved.
+ * Copyright (c) 2020-2022, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -332,7 +332,7 @@
#if TFM_LVL == 1
privileged = true;
#else
- privileged = !!(p_ldinf->flags & PARTITION_MODEL_PSA_ROT);
+ privileged = IS_PARTITION_PSA_ROT(p_ldinf);
#endif
p_asset = (const struct asset_desc_t *)LOAD_INFO_ASSET(p_ldinf);
diff --git a/secure_fw/spm/cmsis_psa/static_load.c b/secure_fw/spm/cmsis_psa/static_load.c
index 0955cb2..16e797f 100644
--- a/secure_fw/spm/cmsis_psa/static_load.c
+++ b/secure_fw/spm/cmsis_psa/static_load.c
@@ -140,7 +140,7 @@
services[i].partition = p_partition;
services[i].next = NULL;
- if (p_ptldinf->flags & PARTITION_MODEL_IPC) {
+ if (IS_PARTITION_IPC_MODEL(p_ptldinf)) {
service_setting |= p_servldinf[i].signal;
}
diff --git a/secure_fw/spm/ffm/backend_sfn.c b/secure_fw/spm/ffm/backend_sfn.c
index 3edde0c..a0275fc 100644
--- a/secure_fw/spm/ffm/backend_sfn.c
+++ b/secure_fw/spm/ffm/backend_sfn.c
@@ -98,7 +98,7 @@
* Built-in partitions still have thread instances: NS Agent (TZ) and
* IDLE partition, and NS Agent (TZ) needs to be specific cared here.
*/
- if (p_pldi->flags & PARTITION_MODEL_IPC) {
+ if (IS_PARTITION_IPC_MODEL(p_pldi)) {
THRD_INIT(&p_pt->thrd, &p_pt->ctx_ctrl,
TO_THREAD_PRIORITY(PARTITION_PRIORITY(p_pldi->flags)));
@@ -125,7 +125,7 @@
p_curr = GET_CURRENT_COMPONENT();
/* Call partition initialization routine one by one. */
UNI_LIST_FOR_EACH(p_part, PARTITION_LIST_ADDR) {
- if (p_part->p_ldinf->flags & PARTITION_MODEL_IPC) {
+ if (IS_PARTITION_IPC_MODEL(p_part->p_ldinf)) {
continue;
}
diff --git a/secure_fw/spm/include/load/partition_defs.h b/secure_fw/spm/include/load/partition_defs.h
index 88ca9f8..78e2f18 100644
--- a/secure_fw/spm/include/load/partition_defs.h
+++ b/secure_fw/spm/include/load/partition_defs.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021, Arm Limited. All rights reserved.
+ * Copyright (c) 2021-2022, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -46,6 +46,11 @@
#define PTR_TO_REFERENCE(x) (uintptr_t)(x)
#define REFERENCE_TO_PTR(x, t) (t)(x)
+#define IS_PARTITION_PSA_ROT(pldi) (!!((pldi)->flags \
+ & PARTITION_MODEL_PSA_ROT))
+#define IS_PARTITION_IPC_MODEL(pldi) (!!((pldi)->flags \
+ & PARTITION_MODEL_IPC))
+
/*
* Common partition structure type, the extendable data is right after it.
* Extendable data has different size for each partition, and must be 4-byte