Spec-Zone.ru › GCC 9

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_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-9.5.0/gcc/Epiphany-Function-Attributes.html

Spec-Zone.ru

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