  
  CTrustThread * CEnclave::get_tcs(int ecall_cmd)
  {
+diff -Nur psw/urts/enclave_creator_hw_com.cpp psw/urts/enclave_creator_hw_com.cpp
+--- psw/urts/enclave_creator_hw_com.cpp
++++ psw/urts/enclave_creator_hw_com.cpp
+@@ -66,8 +66,7 @@
+     if (is_EDMM_supported(enclave_id))
+             info.system_feature_set[0] |= EDMM_ENABLE_BIT;
+ 
+-
+-    int status = enclave->ecall(ECMD_INIT_ENCLAVE, NULL, reinterpret_cast<void *>(&info));
++    int status = enclave->ecall(ECMD_INIT_ENCLAVE, NULL, reinterpret_cast<void *>(&info), /*is_utility=*/false);
+     //free the tcs used by initialization;
+     enclave->get_thread_pool()->reset();
+ 
 diff -Nur psw/urts/enclave.h psw/urts/enclave.h
 --- psw/urts/enclave.h
 +++ psw/urts/enclave.h
+@@ -58,7 +58,7 @@
+     size_t get_dynamic_tcs_list_size();
+     CTrustThreadPool * get_thread_pool() { return m_thread_pool; }
+     uint64_t get_size() { return m_size; };
+-    sgx_status_t ecall(const int proc, const void *ocall_table, void *ms, const bool is_fast = false);
++    sgx_status_t ecall(const int proc, const void *ocall_table, void *ms, bool is_utility, const bool is_switchless = false);
+     int ocall(const unsigned int proc, const sgx_ocall_table_t *ocall_table, void *ms);
+     void destroy();
+     uint32_t atomic_inc_ref() { return se_atomic_inc(&m_ref); }
 @@ -85,7 +85,10 @@
      void set_sealed_key(uint8_t *sealed_key);
      sgx_status_t init_uswitchless(const sgx_uswitchless_config_t* config);

 
 #ifdef __cplusplus
 }
diff -Nur common/inc/internal/se_tcrypto_common.h common/inc/internal/se_tcrypto_common.h
--- common/inc/internal/se_tcrypto_common.h
+++ common/inc/internal/se_tcrypto_common.h

diff -Nur psw/urts/linux/sig_handler.cpp psw/urts/linux/sig_handler.cpp
--- psw/urts/linux/sig_handler.cpp
+++ psw/urts/linux/sig_handler.cpp
@@ -113,7 +113,7 @@
         //If exception is raised in trts again and again, the SSA will overflow, and finally it is EENTER exception.
         assert(reinterpret_cast<tcs_t *>(xbx) == param->tcs);
         CEnclave *enclave = param->trust_thread->get_enclave();
-        unsigned int ret = enclave->ecall(ECMD_EXCEPT, param->ocall_table, NULL);
+        unsigned int ret = enclave->ecall(ECMD_EXCEPT, param->ocall_table, NULL, /*is_utility=*/false);
         if(SGX_SUCCESS == ret)
         {
             //ERESUME execute
@@ -198,23 +198,11 @@
     }
     else
