6.31.8 Атрибуты функций 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, Предыдущий: Атрибуты функций CR16, Наверх: Атрибуты функций [Содержание][Индекс]
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-7.5.0/gcc/Epiphany-Function-Attributes.html