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
. In order to use a variant other than
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
). For example,
/* Argument passed in r0, and result returned in r0+r1. */ double f2d (float) __attribute__((pcs("aapcs")));
Variadic functions always use the
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.