These function attributes are supported for ARM targets:
interrupt
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: IRQ
, FIQ
, SWI
, ABORT
and UNDEF
.
On ARMv7-M the interrupt type is ignored, and the attribute means the function may be called with a word-aligned stack pointer.
isr
interrupt
attribute above. long_call
short_call
-mlong-calls
(see ARM Options) command-line switch and #pragma long_calls
settings. For ARM, the long_call
attribute indicates that the function might be far away from the call site and require a different (more expensive) calling sequence. The short_call
attribute always places the offset to the function from the call site into the ‘BL
’ instruction directly. naked
asm
statements can safely be included in naked functions (see Basic Asm). While using extended asm
or a mixture of basic asm
and C code may appear to work, they cannot be depended upon to work reliably and are not supported. pcs
pcs
attribute 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 "aapcs"
and "aapcs-vfp"
. In 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 "aapcs-vfp"
). For example,
/* 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.
target (
options)
On ARM, the following options are allowed:
thumb
’arm
’Functions from different modes can be inlined in the caller's mode.
fpu=
’-mfpu=
command-line option.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-6.3.0/gcc/ARM-Function-Attributes.html