You can use
__svc_indirect to implement indirect SVCs.
Is the immediate value used in the
It is an expression evaluating to an integer in the range:
0 to 224–1 (a 24-bit value) in an ARM instruction.
0-255 (an 8-bit value) in a 16-bit Thumb instruction.
Is the value passed in
r12to the handler to determine the function to perform.
To use the indirect mechanism, your system handlers must make use of the
r12 value to select the required operation.
__svc_indirect keyword passes an operation code to the SVC handler
__svc_indirect is a function qualifier. It affects the type of a
When an ARM architecture variant or ARM architecture-based processor that does not
SVC instruction is specified on the command line using the
--cpu option, the compiler generates an error.
int __svc_indirect(0) ioctl(int svcino, int fn, void *argp);
ioctl(IOCTL+4, RESET, NULL);