Spec-Zone.ru › GCC 9

6.33.30 Атрибуты функций SH

Эти атрибуты функций поддерживаются на процессорах семейства SH:

function_vector

На целевых устройствах SH2A этот атрибут объявляет функцию, которая должна вызываться с использованием режима адресации, относительного к регистру TBR. Аргументом этого атрибута является номер записи той же функции в таблице векторов, содержащей все функции, адресованные относительно TBR. Для корректной работы регистр TBR должен быть должным образом настроен для указания на начало таблицы векторов до вызова любых функций с этим атрибутом. Обычно хорошее место для инициализации — это стартовая процедура. Таблица векторов, относительная к TBR, может содержать не более 256 записей функций. Переходы к этим функциям генерируются с помощью специфичной для SH2A, незадержанной инструкции перехода JSR/N @(disp8,TBR). Для правильной работы этого атрибута необходимо использовать GAS и GLD из GNU binutils версии 2.7 или более поздней.

В приложении для функции, вызываемой один раз, этот атрибут экономит как минимум 8 байт кода; а если к той же функции выполняются другие последовательные вызовы, он экономит 2 байта кода за каждый из этих вызовов.

interrupt_handler

Используйте этот атрибут, чтобы указать, что указанная функция является обработчиком прерывания. Компилятор генерирует последовательности входа и выхода из функции, подходящие для использования в обработчике прерывания, при наличии этого атрибута.

nosave_low_regs

Используйте этот атрибут на целевых устройствах SH для указания того, что функция interrupt_handler не должна сохранять и восстанавливать регистры R0..R7. Это может быть использовано на целевых устройствах SH3* и SH4*, которые имеют второй набор регистров R0..R7 для нереентерабельных обработчиков прерываний.

renesas

На целевых устройствах SH этот атрибут указывает, что функция или структура следуют ABI Renesas.

resbank

На целевом устройстве SH2A этот атрибут включает быстрое сохранение и восстановление регистров с использованием банка регистров для interrupt_handler процедур. Сохранение в банке выполняется автоматически после того, как процессор принимает прерывание, использующее банк регистров.

В банк регистров сохраняются девятнадцать 32-битных регистров, составляющих общий регистр R0 до R14, контрольный регистр GBR и системные регистры MACH, MACL и PR, а также смещение адреса таблицы векторов. Банки регистров стекируются в порядке LIFO (последним вошел — первым вышел).

Восстановление из банка выполняется путём выдачи инструкции RESBANK.

sp_switch

Используйте этот атрибут на SH для указания, что функция interrupt_handler должна переключиться на альтернативный стек. Он ожидает строковый аргумент, который указывает на глобальную переменную, содержащую адрес альтернативного стека.

void *alt_stack;
void f () __attribute__ ((interrupt_handler,
                          sp_switch ("alt_stack")));
trap_exit

Используйте этот атрибут на SH для interrupt_handler функции, чтобы вернуться с использованием trapa вместо rte. Этот атрибут ожидает целочисленный аргумент, определяющий номер прерывания, который нужно использовать.

trapa_handler

На целевых устройствах SH этот атрибут функции аналогичен interrupt_handler, но он не сохраняет и не восстанавливает все регистры.

Далее: Атрибуты функций SPU, Предыдущее: Атрибуты функций S/390, Вверх: Атрибуты функций [Содержание][Индекс]

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-9.5.0/gcc/SH-Function-Attributes.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API