nRF5 SDK v14.2.0
Macros
Supervisor instructions with indirect number

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);

Documentation feedback | Developer Zone | Subscribe | Updated