Spec-Zone.ru › GCC 10

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

6.33.29 Атрибуты функций RX ¶

Эти атрибуты функций поддерживаются ядром RX:

fast_interrupt

Используйте этот атрибут на порту RX, чтобы указать, что указанная функция является быстрым обработчиком прерывания. Это аналогично атрибуту interrupt, за исключением того, что для возврата используется freit, а не reit.

interrupt

Используйте этот атрибут, чтобы указать, что указанная функция является обработчиком прерывания. Компилятор генерирует последовательности входа и выхода из функции, подходящие для использования в обработчике прерывания, когда этот атрибут присутствует.

В целях RX и RL78 можно указать один или несколько номеров векторов в качестве аргументов атрибута, а также указать альтернативное имя таблицы. Параметры обрабатываются последовательно, поэтому один обработчик может быть назначен нескольким записям в нескольких таблицах. Также можно передать магическую строку "$default", которая заставит функцию использоваться для любых незаполненных слотов в текущей таблице.

Этот пример демонстрирует простое назначение функции одному вектору в таблице по умолчанию (обратите внимание, что могут использоваться макросы препроцессора для обозначения символьных векторов, специфичных для чипа):

void __attribute__ ((interrupt (5))) txd1_handler ();

Этот пример назначает функцию двум слотам в таблице по умолчанию (используя макросы препроцессора, определенные в другом месте) и делает её функцией по умолчанию для таблицы dct:

void __attribute__ ((interrupt (RXD1_VECT,RXD2_VECT,"dct","$default")))
	txd1_handler ();
naked

Этот атрибут позволяет компилятору создать необходимое объявление функции, позволяя при этом использовать ассемблерный код в теле функции. Для указанной функции не будут генерироваться пролог/эпилог компилятором. В голых функциях безопасно включать только базовые asm инструкции (см. Базовый ассемблер — ассемблерные инструкции без операндов). Хотя использование расширенных asm инструкций или сочетания базовых asm и C-кода может показаться работающим, нельзя гарантировать их надежную работу, и они не поддерживаются.

vector

Этот атрибут RX похож на атрибут interrupt, включая его параметры, но не делает функцию типом обработчика прерываний (то есть, она сохраняет стандартную ABI для вызова C-функций). См. атрибут interrupt для описания его аргументов.

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

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-10.5.0/gcc/RX-Function-Attributes.html

Spec-Zone.ru

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