Spec-Zone.ru › GCC 10

Следующая: Атрибуты функций Symbian OS, Предыдущая: Атрибуты функций S/390, Вверх: Объявление атрибутов функций [Оглавление][Индекс]

6.33.31 Атрибуты функций 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, а также смещение адреса таблицы векторов сохраняются в регистровый банк. Регистровые банки стекируются в порядке «первый вошел — последний вышел» (FILO). Восстановление из банка выполняется путем выдачи инструкции 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, но он не сохраняет и не восстанавливает все регистры.

Следующая: Атрибуты функций Symbian OS, Предыдущая: Атрибуты функций S/390, Вверх: Объявление атрибутов функций [Оглавление][Индекс]

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

Spec-Zone.ru

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