Supervisor instructions with indirect number

nRF5 SDK v15.0.0

Macros to create Supervisor instructions using indirect number. More...

Macros

#define NRF_SVCI_SVC_NUM 0
#define NRF_SVCI_SVC_NUM_INVALID (0xFFFFFFFF)
#define GCC_CAST_CPP
#define SVCI_DECL (svci_num, return_type, function_name,...)
#define SVCI_DECL_0 (svci_num, return_type, function_name)
#define SVCI_0 (svci_num, return_type, function_name)
#define SVCI_1 (svci_num, return_type, function_name, p0t, p0n)
#define SVCI_2 (svci_num, return_type, function_name, p0t, p0n, p1t, p1n)
#define SVCI_3 (svci_num, return_type, function_name, p0t, p0n, p1t, p1n, p2t, p2n)
#define SVCI_4 (svci_num, return_type, function_name, p0t, p0n, p1t, p1n, p2t, p2n, p3t, p3n)
#define VA_NARGS_IMPL (_0, _1, _2, _3, _4, _5, _6, _7, _8, N,...)   N
#define VA_NARGS (...) VA_NARGS_IMPL (__VA_ARGS__, 4, 4, 3, 3, 2, 2, 1, 1, 0)
#define SVCI_IMPLI (count, svci_num, return_type, function_name,...)   SVCI##_##count (svci_num, return_type, function_name, ##__VA_ARGS__)
#define SVCI_IMPL (count, svci_num, return_type, function_name,...)   SVCI_IMPLI(count, svci_num, return_type, function_name, ##__VA_ARGS__)
#define SVCI (svci_num, return_type, function_name,...)   SVCI_IMPL( VA_NARGS (__VA_ARGS__), svci_num, return_type, function_name, ##__VA_ARGS__)

Detailed Description

Macros to create Supervisor instructions using indirect number.

Macro Definition Documentation

#define NRF_SVCI_SVC_NUM   0

SVC number used for all SVCI functions.

#define NRF_SVCI_SVC_NUM_INVALID   (0xFFFFFFFF)

Invalid SVCI number.

#define SVCI_0 ( svci_num,
return_type,
function_name
)
Value:
SVCI_DECL_0(svci_num, return_type, function_name) \
static __INLINE return_type function_name( void ) \
{ \
return svci_ ## function_name(svci_num); \
}
#define SVCI_1 ( svci_num,
return_type,
function_name,
p0t,
p0n
)
Value:
SVCI_DECL(svci_num, return_type, function_name, p0t p0n) \
static __INLINE return_type function_name(p0t p0n) \
{ \
return svci_ ## function_name(svci_num, p0n); \
}
#define SVCI_2 ( svci_num,
return_type,
function_name,
p0t,
p0n,
p1t,
p1n
)
Value:
SVCI_DECL(svci_num, return_type, function_name, p0t p0n, p1t p1n) \
static __INLINE return_type function_name(p0t p0n, p1t p1n) \
{ \
return svci_ ## function_name(svci_num, p0n, p1n); \
}
#define SVCI_3 ( svci_num,
return_type,
function_name,
p0t,
p0n,
p1t,
p1n,
p2t,
p2n
)
Value:
SVCI_DECL(svci_num, return_type, function_name, p0t p0n, p1t p1n, p2t p2n) \
static __INLINE return_type function_name(p0t p0n, p1t p1n, p2t p2n) \
{ \
return svci_ ## function_name(svci_num, p0n, p1n, p2n); \
}
#define SVCI_4 ( svci_num,
return_type,
function_name,
p0t,
p0n,
p1t,
p1n,
p2t,
p2n,
p3t,
p3n
)
Value:
SVCI_DECL(svci_num, return_type, function_name, p0t p0n, p1t p1n, p2t p2n, p3t p3n) \
static __INLINE return_type function_name(p0t p0n, p1t p1n, p2t p2n, p3t p3n) \
{ \
return svci_ ## function_name(svci_num, p0n, p1n, p2n, p3n); \
}
#define SVCI_DECL ( svci_num,
return_type,
function_name,
...
)
Value:
return_type __svc_indirect( NRF_SVCI_SVC_NUM ) \
svci_ ## function_name(uint32_t _svci_num, ##__VA_ARGS__);
#define SVCI_DECL_0 ( svci_num,
return_type,
function_name
)
Value:
return_type __svc_indirect( NRF_SVCI_SVC_NUM ) \
svci_ ## function_name(uint32_t _svci_num);