Explorar el Código

RTX5: added Trusted Firmware M extension (SDCMSIS-774)

Robert Rostohar hace 7 años
padre
commit
58b79ea09b
Se han modificado 2 ficheros con 29 adiciones y 0 borrados
  1. 8 0
      CMSIS/RTOS2/RTX/Include/rtx_os.h
  2. 21 0
      CMSIS/RTOS2/RTX/Source/rtx_thread.c

+ 8 - 0
CMSIS/RTOS2/RTX/Include/rtx_os.h

@@ -123,6 +123,9 @@ typedef struct osRtxThread_s {
   uint32_t                         sp;  ///< Current Stack Pointer
   uint32_t                thread_addr;  ///< Thread entry address
   uint32_t                  tz_memory;  ///< TrustZone Memory Identifier
+#ifdef RTX_TF_M_EXTENSION
+  uint32_t                  tz_module;  ///< TrustZone Module Identifier
+#endif
 } osRtxThread_t;
  
  
@@ -406,6 +409,11 @@ extern void SVC_Handler     (void);
 extern void PendSV_Handler  (void);
 extern void SysTick_Handler (void);
  
+/// OS Trusted Firmware M Extension
+#ifdef RTX_TF_M_EXTENSION
+extern uint32_t osRtxTzGetModuleId (void);
+#endif
+ 
  
 //  ==== OS External Configuration ====
  

+ 21 - 0
CMSIS/RTOS2/RTX/Source/rtx_thread.c

@@ -549,6 +549,24 @@ __WEAK void osRtxThreadStackCheck (void) {
   }
 }
 
+#ifdef RTX_TF_M_EXTENSION
+/// Get TrustZone Module Identifier of running Thread.
+/// \return TrustZone Module Identifier.
+uint32_t osRtxTzGetModuleId (void) {
+  os_thread_t *thread;
+  uint32_t     tz_module;
+
+  thread = osRtxThreadGetRunning();
+  if (thread != NULL) {
+    tz_module = thread->tz_module;
+  } else {
+    tz_module = 0U;
+  }
+
+  return tz_module;
+}
+#endif
+
 
 //  ==== Post ISR processing ====
 
@@ -774,6 +792,9 @@ static osThreadId_t svcRtxThreadNew (osThreadFunc_t func, void *argument, const
     thread->thread_addr   = (uint32_t)func;
   #if (DOMAIN_NS == 1)
     thread->tz_memory     = tz_memory;
+  #ifdef RTX_TF_M_EXTENSION
+    thread->tz_module     = tz_module;
+  #endif
   #endif
 
     // Initialize stack