These function attributes are supported by the ARC back end:
interrupt
On the ARC, you must specify the kind of interrupt to be handled in a parameter to the interrupt attribute like this:
void f () __attribute__ ((interrupt ("ilink1")));
Permissible values for this parameter are: ilink1
and
ilink2
for ARCv1 architecture, and ilink
and
firq
for ARCv2 architecture.
long_call
medium_call
short_call
#pragma long_calls
settings.
For ARC, a function marked with the long_call
attribute is
always called using register-indirect jump-and-link instructions,
thereby enabling the called function to be placed anywhere within the
32-bit address space. A function marked with the medium_call
attribute will always be close enough to be called with an unconditional
branch-and-link instruction, which has a 25-bit offset from
the call site. A function marked with the short_call
attribute will always be close enough to be called with a conditional
branch-and-link instruction, which has a 21-bit offset from
the call site.
jli_always
jli
instruction. The jli
instruction makes use of a table stored
into .jlitab
section, which holds the location of the functions
which are addressed using this instruction.
jli_fixed
jli
table is known and given as an attribute parameter.
secure_call
sjli
table needs to be passed as argument.
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.