Merge remote-tracking branch 'feature-ipc' into 'master'

* Remote feature-ipc: (31 commits)
  Platform: Correct region name
  Core: Add ZI and RW regions for seucre data in memory check
  Core: free connection handle in psa_reply
  Core: Support set reverse handle during connecting
  Core: Fix thread list handling
  Core: Config isolation for partitions with PSA API
  Core: Implement the IPC Secure Client API
  Core: Implement PSA service functions
  Core: Add memory check function for IPC
  Core: Adapt PSA API veneer with implemented handler
  Platform: Align region name in armclang and gcc
  Core: Add secure partition manager for IPC
  Core: Enhance manifest to align with PSA
  Core: Add IPC Client and Service Secure Partition
  Core: Add list, message queue, and pool functions
  Core: Fundamental components for secure IPC
  Core: Update IPC implementation framework
  Core: Align with PSA FF specification 1.0-beta-0
  Crypto: Conditional reference PSA types by PSA FF version
  Cmake: Disable regression tests for IPC configuration
  ...

Change-Id: I6527765ab71fe30e7e9fe93c705d899730970789
Signed-off-by: Edison Ai <edison.ai@arm.com>
diff --git a/secure_fw/spm/spm_db.h b/secure_fw/spm/spm_db.h
index 512ede1..6b28f94 100644
--- a/secure_fw/spm/spm_db.h
+++ b/secure_fw/spm/spm_db.h
@@ -8,8 +8,37 @@
 #ifndef __SPM_DB_H__
 #define __SPM_DB_H__
 
+
+#ifdef TFM_PSA_API
+#include "tfm_thread.h"
+#endif
+
+struct spm_partition_desc_t;
+struct spm_partition_db_t;
+
 typedef psa_status_t(*sp_init_function)(void);
 
+#define TFM_PARTITION_TYPE_APP   "APPLICATION-ROT"
+#define TFM_PARTITION_TYPE_PSA   "PSA-ROT"
+
+#define TFM_STACK_SIZE  1024
+
+#ifdef TFM_PSA_API
+enum tfm_partition_priority {
+    TFM_PRIORITY_LOW = THRD_PRIOR_LOWEST,
+    TFM_PRIORITY_NORMAL = THRD_PRIOR_MEDIUM,
+    TFM_PRIORITY_HIGH = THRD_PRIOR_HIGHEST,
+};
+#else
+enum tfm_partition_priority {
+    TFM_PRIORITY_LOW = 0xFF,
+    TFM_PRIORITY_NORMAL = 0x7F,
+    TFM_PRIORITY_HIGH = 0,
+};
+#endif
+
+#define TFM_PRIORITY(LEVEL)      TFM_PRIORITY_##LEVEL
+
 /**
  * Holds the fields of the partition DB used by the SPM code. The values of
  * these fields are calculated at compile time, and set during initialisation
@@ -18,6 +47,7 @@
 struct spm_partition_static_data_t {
     uint32_t partition_id;
     uint32_t partition_flags;
+    uint32_t partition_priority;
     sp_init_function partition_init;
 };
 
@@ -32,6 +62,15 @@
 #if TFM_LVL != 1
     struct tfm_spm_partition_memory_data_t memory_data;
 #endif
+#ifdef TFM_PSA_API
+    struct tfm_thrd_ctx sp_thrd;
+    /*
+     * FixMe: Hard code stack is not aligned with the definition in the
+     * manifest. It will use the partition stacks in the linker scripts/sct
+     * files include Level 1 to 3.
+     */
+    uint8_t stack[TFM_STACK_SIZE] __attribute__((aligned(8)));
+#endif
 };
 
 /* Macros to pick linker symbols and allow to form the partition data base */