M32R/D Attributes (Using the GNU Compiler Collection (GCC))

#### 6.4.2.13 M32R/D Attributes ¶

These attributes are supported by the M32R/D back end:

`interrupt` ¶

  This attribute applies to functions.

  It indicates 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.

`model (model-name)` ¶

  This attribute applies to functions and variables.

  On the M32R/D, use this attribute to set the addressability of an object, and of the code generated for a function. The identifier model-name is one of `small`, `medium`, or `large`, representing each of the code models.

  Small model objects live in the lower 16MB of memory (so that their addresses can be loaded with the `ld24` instruction), and are callable with the `bl` instruction.

  Medium model objects may live anywhere in the 32-bit address space (the compiler generates `seth/add3` instructions to load their addresses), and are callable with the `bl` instruction.

  Large model objects may live anywhere in the 32-bit address space (the compiler generates `seth/add3` instructions to load their addresses), and may not be reachable with the `bl` instruction (the compiler generates the much slower `seth/add3/jl` instruction sequence).