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