From 5c5fb3ee69a6f58d1110edc15dfc7464b49dfdd9 Mon Sep 17 00:00:00 2001 From: isiora Date: Wed, 24 Jan 2018 06:58:40 +0000 Subject: [PATCH] git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@11398 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/common/ports/ARMCAx-TZ/chsmc.h | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/os/common/ports/ARMCAx-TZ/chsmc.h b/os/common/ports/ARMCAx-TZ/chsmc.h index 170ead317..37c1e30b1 100644 --- a/os/common/ports/ARMCAx-TZ/chsmc.h +++ b/os/common/ports/ARMCAx-TZ/chsmc.h @@ -46,7 +46,7 @@ * Special service handles */ #define SMC_HND_TRAMP ((smc_service_t *)0) -#define SMC_HND_GET ((smc_service_t *)1) +#define SMC_HND_DISCOVERY ((smc_service_t *)1) /* * Non secure memory address space @@ -55,6 +55,12 @@ #define NSEC_MEMORY_START ((uint8_t *)0x20000000) #define NSEC_MEMORY_END ((uint8_t *)0x20100000) +/* + * Services table cardinality + */ +#define SMC_SVC_MAX_N 32 +#define SMC_SVC_MAX_NAME_LEN 16 + /*===========================================================================*/ /* Module pre-compile time settings. */ /*===========================================================================*/ @@ -70,8 +76,10 @@ typedef uint8_t * smc_params_area_t; typedef struct ch_smc_service { thread_reference_t svct; + uint32_t register_order; smc_params_area_t svc_data; uint32_t svc_datalen; + char svc_name[SMC_SVC_MAX_NAME_LEN]; } smc_service_t; /*===========================================================================*/ @@ -86,10 +94,11 @@ typedef struct ch_smc_service { extern "C" { #endif extern thread_reference_t _ns_thread; -CC_NO_RETURN void _ns_trampoline(uint8_t *addr); +void _ns_trampoline(uint8_t *addr); void smcInit(void); -registered_object_t * smcRegisterMeAsService(const char *svc_name); -msg_t smcServiceWaitRequest(smc_service_t *svcp); +void smcWaitServicesStarted(uint32_t n_services); +smc_service_t *smcRegisterMeAsService(const char *svc_name); +msg_t smcServiceWaitRequest(smc_service_t *svcp, msg_t msg); msg_t smcServiceWaitRequestS(smc_service_t *svcp); #ifdef __cplusplus }