| |||
| Home > Compiler-specific Features > Keywords and operators > __svc_indirect | |||
The __svc_indirect keyword passes an operation
code to the SVC handler in r12.
__svc_indirect is a function qualifier.
It affects the type of a function.
__svc_indirect(intsvc_num) return-type function-name(intreal_num[, argument-list]);
Where:
svc_numIs the immediate value used in the SVC instruction.
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.
real_numIs the value passed in r12 to
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.
int __svc_indirect(0) ioctl(int svcino, int fn, void *argp);
Calling:
ioctl(IOCTL+4, RESET, NULL);
compiles to SVC #0 with IOCTL+4
in r12.
When an ARM architecture variant or ARM architecture-based
processor that does not support an SVC instruction
is specified on the command line using the --cpu option,
the compiler generates an error.
SVC in the Assembler Reference.