Next: MSP430 Function Attributes, Previous: Microsoft Windows Function Attributes, Up: Function Attributes [Contents][Index]
These function attributes are supported by the MIPS back end:
interrupt
Use this attribute to indicate that the specified function is an interrupt handler. The compiler generates function entry and exit sequences suitable for use in an interrupt handler when this attribute is present.
You can use the following attributes to modify the behavior of an interrupt handler:
use_shadow_register_set
Assume that the handler uses a shadow register set, instead of the main general-purpose registers.
keep_interrupts_masked
Keep interrupts masked for the whole function. Without this attribute, GCC tries to reenable interrupts for as much of the function as it can.
use_debug_exception_return
Return using the deret
instruction. Interrupt handlers that don’t
have this attribute return using eret
instead.
You can use any combination of these attributes, as shown below:
void __attribute__ ((interrupt)) v0 (); void __attribute__ ((interrupt, use_shadow_register_set)) v1 (); void __attribute__ ((interrupt, keep_interrupts_masked)) v2 (); void __attribute__ ((interrupt, use_debug_exception_return)) v3 (); void __attribute__ ((interrupt, use_shadow_register_set, keep_interrupts_masked)) v4 (); void __attribute__ ((interrupt, use_shadow_register_set, use_debug_exception_return)) v5 (); void __attribute__ ((interrupt, keep_interrupts_masked, use_debug_exception_return)) v6 (); void __attribute__ ((interrupt, use_shadow_register_set, keep_interrupts_masked, use_debug_exception_return)) v7 ();
long_call
near
far
These attributes specify how a particular function is called on MIPS.
The attributes override the -mlong-calls (see MIPS Options)
command-line switch. The long_call
and far
attributes are
synonyms, and cause the compiler to always call
the function by first loading its address into a register, and then using
the contents of that register. The near
attribute has the opposite
effect; it specifies that non-PIC calls should be made using the more
efficient jal
instruction.
mips16
nomips16
On MIPS targets, you can use the mips16
and nomips16
function attributes to locally select or turn off MIPS16 code generation.
A function with the mips16
attribute is emitted as MIPS16 code,
while MIPS16 code generation is disabled for functions with the
nomips16
attribute. These attributes override the
-mips16 and -mno-mips16 options on the command line
(see MIPS Options).
When compiling files containing mixed MIPS16 and non-MIPS16 code, the
preprocessor symbol __mips16
reflects the setting on the command line,
not that within individual functions. Mixed MIPS16 and non-MIPS16 code
may interact badly with some GCC extensions such as __builtin_apply
(see Constructing Calls).
micromips, MIPS
nomicromips, MIPS
On MIPS targets, you can use the micromips
and nomicromips
function attributes to locally select or turn off microMIPS code generation.
A function with the micromips
attribute is emitted as microMIPS code,
while microMIPS code generation is disabled for functions with the
nomicromips
attribute. These attributes override the
-mmicromips and -mno-micromips options on the command line
(see MIPS Options).
When compiling files containing mixed microMIPS and non-microMIPS code, the
preprocessor symbol __mips_micromips
reflects the setting on the
command line,
not that within individual functions. Mixed microMIPS and non-microMIPS code
may interact badly with some GCC extensions such as __builtin_apply
(see Constructing Calls).
nocompression
On MIPS targets, you can use the nocompression
function attribute
to locally turn off MIPS16 and microMIPS code generation. This attribute
overrides the -mips16 and -mmicromips options on the
command line (see MIPS Options).
Next: MSP430 Function Attributes, Previous: Microsoft Windows Function Attributes, Up: Function Attributes [Contents][Index]