6.33.10 Атрибуты функций Epiphany
Эти атрибуты функций поддерживаются бэкэндом Epiphany:
disinterrupt-
Этот атрибут заставляет компилятор генерировать инструкции для отключения прерываний на время выполнения данной функции.
forwarder_section-
Этот атрибут изменяет поведение обработчика прерываний. Обработчик прерываний может находиться во внешней памяти, недоступной для инструкции ветвления, поэтому генерируется локальный переход для передачи управления. Единственный параметр идентифицирует секцию, где размещается переход.
interrupt-
Используйте этот атрибут, чтобы указать, что указанная функция является обработчиком прерываний. Компилятор генерирует последовательности входа и выхода из функции, подходящие для использования в обработчике прерываний, когда этот атрибут присутствует. Он также может сгенерировать специальную секцию с кодом для инициализации таблицы векторов прерываний.
На целевых платформах Epiphany можно добавить один или несколько необязательных параметров, как показано ниже:
void __attribute__ ((interrupt ("dma0, dma1"))) universal_dma_handler ();Допустимые значения для этих параметров:
reset,software_exception,page_miss,timer0,timer1,message,dma0,dma1,wandиswi. Несколько параметров указывают на то, что для этой функции должны быть инициализированы несколько записей в таблице векторов прерываний, то есть для каждого параметра name генерируется переход в функцию в секции ivt_entry_name. Параметр(ы) могут быть опущены, в этом случае запись в таблице векторов прерываний не предоставляется.Обратите внимание, что прерывания включены внутри функции, если не указан атрибут
disinterrupt.Следующие примеры являются допустимыми вариантами использования этих атрибутов на целевых платформах Epiphany:
void __attribute__ ((interrupt)) universal_handler (); void __attribute__ ((interrupt ("dma1"))) dma1_handler (); void __attribute__ ((interrupt ("dma0, dma1"))) universal_dma_handler (); void __attribute__ ((interrupt ("timer0"), disinterrupt)) fast_timer_handler (); void __attribute__ ((interrupt ("dma0, dma1"), forwarder_section ("tramp"))) external_dma_handler (); long_callshort_call-
Эти атрибуты определяют, как вызывается конкретная функция. Эти атрибуты переопределяют переключатель командной строки -mlong-calls (см. Параметры Adapteva Epiphany) и настройки
#pragma long_calls.
Далее: Атрибуты функций H8/300, Предыдущее: Атрибуты функций C-SKY, Вверх: Атрибуты функций [Оглавление][Индекс]
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-9.5.0/gcc/Epiphany-Function-Attributes.html