Spec-Zone.ru › GCC 6

6.31.27 Атрибуты функций 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, но он не сохраняет и не восстанавливает все регистры.

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

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

Spec-Zone.ru

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