Spec-Zone.ru › GCC 10

Далее: Атрибуты функций H8/300, Предыдущее: Атрибуты функций C-SKY, Вверх: Объявление атрибутов функций [Оглавление][Индекс]

6.33.11 Атрибуты функций 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_call
short_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-10.5.0/gcc/Epiphany-Function-Attributes.html

Spec-Zone.ru

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