Spec-Zone.ru › GCC 12

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

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-12.2.0/gcc/SH-Function-Attributes.html

Spec-Zone.ru

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