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

 
 
> IAR С и FIQ прерывание, зачем IAR кидает в стек R8-R14?
Andy Mozzhevilov
сообщение May 3 2005, 11:14
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Есть прерывание, объявленное как fiq :
__fiq __arm void my_fiq (void)


при входе в которое генерится код:

\ 00000000 04E04EE2 SUB LR,LR,#+0x4
\ 00000004 0F5F2DE9 STMDB SP!,{R0-R3,R8-R12,LR} ;; Push

Вопрос, а нафига в fiq прерывании в стек кидаются регистры с R8 и выше,
если они для fiq свои (личные и персональные) и шарятся ядром при входе в fiq? Зачем стек-то засорять и время тратить на это?
Или есть способ сказать этого компилятору не делать? Навскидку не нашел.


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sapID
сообщение May 6 2005, 03:28
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 24
Регистрация: 21-10-04
Из: Пермь, РФ
Пользователь №: 934



Во всех примерах в файле Cstartup.s79:

FIQ_Handler_Entry:

;- Switch in SVC/User Mode to allow User Stack access for C code
; because the FIQ is not yet acknowledged

;- Save and r0 in FIQ_Register
mov r9,r0
ldr r0 , [r8, #AIC_FVR]
msr CPSR_c,#I_BIT | F_BIT | ARM_MODE_SVC

;- Save scratch/used registers and LR in User Stack
stmfd sp!, { r1-r3, r12, lr}

;- Branch to the routine pointed by the AIC_FVR
mov r14, pc
bx r0

;- Restore scratch/used registers and LR from User Stack
ldmia sp!, { r1-r3, r12, lr}

;- Leave Interrupts disabled and switch back in FIQ mode
msr CPSR_c, #I_BIT | F_BIT | ARM_MODE_FIQ

;- Restore the R0 ARM_MODE_SVC register
mov r0,r9

;- Restore the Program Counter using the LR_fiq directly in the PC
subs pc,lr,#4
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение May 6 2005, 11:59
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Цитата(sapID @ May 6 2005, 08:28)
Во всех примерах в файле Cstartup.s79:

*


Ну во первых, не во всех, а только в примерах для атмеловских SAM7S.
В остальных примерах этого нет.
Во-вторых, я не понял, какой смысл в замене режима. Зачем им доступ к
стеку там понадобился, в простейших примерах. Делать на основе этих стартапов вывод о том, что это нужно так делать и что компилятор рассчитывает, что будет сделано именно так, я бы не стал. И делать так смысла не вижу.
Впрочем, написал в иар, может чего ответят после праздников.


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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