реклама на сайте
подробности

 
 
> Соглашения по регистрам, Cortex M3, gcc 4.7.2
Genadi Zawidowsk...
сообщение Feb 12 2013, 18:55
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Вижу, что в документе Cortex-M3 programming manual написано - при входе в прерывание сохраняется
Цитата
● R0-R3, R12
● Return address
● PSR
● LR

Добавление __attribute__((__interrupt__)) (как я смог понять из кода) добавляет выравнивание стека на 8. В этом нет необходимости - обработка прерывания процессором это обеспечивает независимо от требования на выравнивание.
А что обеспечивает сохранение остальных регистров? Или эти регистры в gcc 4.7.2 в случае их использования в вычислениях сохраняются автоматически?
Сейчас при невнимательном тестировании на первый взгляд всё работает и без __attribute__((__interrupt__)).

В документе http://gcc.gnu.org/onlinedocs/gcc-4.7.2/gc...tion-Attributes написано только то, что я и понял - на Cortex Mx только выравнивает стэк:
Цитата
On ARMv7-M the interrupt type is ignored, and the attribute means the function may be called with a word aligned stack pointer.

В start-up никаких изменений режима работы процессора не делается.
CODE
static void ResetException( void )
{

uint32_t * pSrc, * pDest ;


/* Low level Initialize */
arm_cpu_initialize(); // watchdog disable, clock initialize

/* Initialize the relocate segment */
pSrc = & _sidata;
pDest = & __data_start;

if ( pSrc != pDest )
{
// compiled for FLASH
for ( ; pDest < & __data_end ; )
{
*pDest++ = *pSrc++ ;
}
}
// Следить, чтобы переменные не оказались в стеке, очищаемом сейчас.
// Для этого, например, использована секция noinit
/* Clear the zero segment */
for ( pDest = & __bss_start; pDest < & __bss_end; )
{
* pDest ++ = 0;
}

/* Branch to main function */
main();

/* Infinite loop */
for (;;)
;
}


Сообщение отредактировал Genadi Zawidowski - Feb 12 2013, 19:18
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ViKo
сообщение Feb 12 2013, 19:33
Сообщение #2


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Из книжки J. Yiu
Цитата
In many cases, the interrupt handler requires more than R0–R3 and R12 to process the interrupt, so we
might need to save some other registers as well. For C language users, there is no need to worry about this,
as the C function saves additional registers automatically if required. For assembly language users, their
interrupt handlers have to perform stack PUSH and POP to ensure the values of R4–R11 are preserved.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Genadi Zawidowski   Соглашения по регистрам   Feb 12 2013, 18:55
- - _Артём_   Цитата(Genadi Zawidowski @ Feb 12 2013, 20...   Feb 12 2013, 19:10
|- - Genadi Zawidowski   Цитата(_Артём_ @ Feb 12 2013, 23:10) Не п...   Feb 12 2013, 19:19
|- - VslavX   Цитата(Genadi Zawidowski @ Feb 12 2013, 21...   Feb 12 2013, 19:29
|- - _Артём_   Цитата(Genadi Zawidowski @ Feb 12 2013, 21...   Feb 12 2013, 19:33
- - Genadi Zawidowski   Спасибо, значит функции обработчиков перерывания в...   Feb 12 2013, 19:36
|- - demiurg_spb   Цитата(Genadi Zawidowski @ Feb 12 2013, 23...   Feb 13 2013, 05:38
- - ReAl   У меня Код#ifdef __cplusplus # define INTERRUPT e...   Feb 13 2013, 06:57
- - Genadi Zawidowski   Пока мне APCS встретилось только в таком контексте...   Feb 13 2013, 18:49
|- - ViKo   Цитата(Genadi Zawidowski @ Feb 13 2013, 21...   Feb 14 2013, 03:59
|- - VslavX   Цитата(Genadi Zawidowski @ Feb 13 2013, 20...   Feb 14 2013, 06:19
- - Genadi Zawidowski   ЦитатаGCC следует стандартным соглашениям для архи...   Feb 14 2013, 09:31
|- - ViKo   Цитата(Genadi Zawidowski @ Feb 14 2013, 12...   Feb 14 2013, 10:37
||- - _Pasha   Цитата(ViKo @ Feb 14 2013, 14:37) В качес...   Feb 14 2013, 10:53
||- - Genadi Zawidowski   Цитата(ViKo @ Feb 14 2013, 14:37) В принц...   Feb 14 2013, 12:14
||- - ViKo   Цитата(Genadi Zawidowski @ Feb 14 2013, 15...   Feb 14 2013, 12:24
|- - ReAl   Цитата(Genadi Zawidowski @ Feb 14 2013, 11...   Feb 14 2013, 13:17
- - Genadi Zawidowski   Для примера, как выглядит соответствующая глава до...   Feb 15 2013, 07:22
- - AHTOXA   Вот же: Procedure Call Standard for the ARM Archit...   Feb 15 2013, 07:28
- - Genadi Zawidowski   Цитата(AHTOXA @ Feb 15 2013, 11:28) Вот ж...   Feb 15 2013, 07:45


Closed TopicStart new topic
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 04:26
Рейтинг@Mail.ru


Страница сгенерированна за 0.01391 секунд с 7
ELECTRONIX ©2004-2016