Spec-Zone.ru › GCC 15

6.4.1.27 Атрибуты функций 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 или сочетания базового asm с кодом C может показаться работоспособным, на такую работу нельзя полагаться, и она не поддерживается.

vector

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

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

Spec-Zone.ru

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