6.31.3 Атрибуты функций ARC
Эти атрибуты функций поддерживаются бэкендом ARC:
interrupt-
Используйте этот атрибут, чтобы указать, что указанная функция является обработчиком прерываний. Компилятор генерирует последовательности входа и выхода из функции, подходящие для использования в обработчике прерываний, когда этот атрибут присутствует.
В ARC вы должны указать тип прерывания, который будет обрабатываться в параметре атрибута прерывания, например:
void f () __attribute__ ((interrupt ("ilink1")));Допустимые значения для этого параметра:
ilink1иilink2. long_callmedium_callshort_call-
Эти атрибуты определяют, как вызывается конкретная функция. Эти атрибуты переопределяют переключатели командной строки -mlong-calls и -mmedium-calls (см. Параметры ARC) и
#pragma long_callsнастройки.Для ARC функция, помеченная атрибутом
long_call, всегда вызывается с помощью инструкций косвенного перехода с сохранением адреса возврата, что позволяет разместить вызываемую функцию в любом месте 32-битного адресного пространства. Функция, помеченная атрибутомmedium_call, всегда будет достаточно близко, чтобы быть вызвана с инструкцией безусловного перехода с сохранением адреса возврата, которая имеет смещение в 25 бит от места вызова. Функция, помеченная атрибутомshort_call, всегда будет достаточно близко, чтобы быть вызвана с инструкцией условного перехода с сохранением адреса возврата, которая имеет смещение в 21 бит от места вызова.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-6.5.0/gcc/ARC-Function-Attributes.html