These function attributes are supported for ARM targets:
You can specify the kind of interrupt to be handled by adding an optional parameter to the interrupt attribute like this:
void f () __attribute__ ((interrupt ("IRQ")));
Permissible values for this parameter are:
On ARMv7-M the interrupt type is ignored, and the attribute means the function
may be called with a word-aligned stack pointer.
#pragma long_callssettings. For ARM, the
long_callattribute indicates that the function might be far away from the call site and require a different (more expensive) calling sequence. The
short_callattribute always places the offset to the function from the call site into the ‘BL’ instruction directly.
asmstatements can safely be included in naked functions (see Basic Asm). While using extended
asmor a mixture of basic
asmand C code may appear to work, they cannot be depended upon to work reliably and are not supported.
pcsattribute can be used to control the calling convention used for a function on ARM. The attribute takes an argument that specifies the calling convention to use.
When compiling using the AAPCS ABI (or a variant of it) then valid
values for the argument are
order to use a variant other than
"aapcs" then the compiler must
be permitted to use the appropriate co-processor registers (i.e., the
VFP registers must be available in order to use
/* Argument passed in r0, and result returned in r0+r1. */ double f2d (float) __attribute__((pcs("aapcs")));
Variadic functions always use the
"aapcs" calling convention and
the compiler rejects attempts to specify an alternative.
On ARM, the following options are allowed:
Functions from different modes can be inlined in the caller's mode.