Spec-Zone.ru › GCC 11

Следующее: Атрибуты функций 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-11.4.0/gcc/SH-Function-Attributes.html

Spec-Zone.ru

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