H8/300 Attributes (Using the GNU Compiler Collection (GCC))

#### 6.4.2.10 H8/300 Attributes ¶

These attributes are available for H8/300 targets:

`function_vector` ¶

  This attribute applies to functions.

  Use it on the H8/300, H8/300H, and H8S to indicate that the specified function should be called through the function vector. Calling a function through the function vector reduces code size; however, the function vector has a limited size (maximum 128 entries on the H8/300 and 64 entries on the H8/300H and H8S) and shares space with the interrupt vector.

`interrupt_handler` ¶

  This attribute applies to functions.

  Use it on the H8/300, H8/300H, and H8S 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.

`saveall` ¶

  This attribute applies to functions.

  Use it on the H8/300, H8/300H, and H8S to indicate that all registers except the stack pointer should be saved in the prologue regardless of whether they are used or not.

`monitor` ¶

  This attribute applies to functions.

  Use it to indicate a monitor function. It tells GCC to generate entry and exit sequences that disable interrupts during execution of the function.

`OS_Task` ¶

  This attribute applies to functions.

  Use it to disable the normal register and stack save and restore sequences on function entry and exit. The function epilogue generated by GCC includes only a return instruction.

`eightbit_data` ¶

  This attribute applies to variable declarations.

  Use it on the H8/300, H8/300H, and H8S to indicate that the specified variable should be placed into the eight-bit data section. The compiler generates more efficient code for certain operations on data in the eight-bit data area. Note the eight-bit data area is limited to 256 bytes of data.

`tiny_data` ¶

  This attribute applies to variable declarations.

  Use it the H8/300H and H8S to indicate that the specified variable should be placed into the tiny data section. The compiler generates more efficient code for loads and stores on data in the tiny data section. Note the tiny data area is limited to slightly under 32KB of data.