[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[avr-gcc-list] interrupt service routine question
From: |
Ewout |
Subject: |
[avr-gcc-list] interrupt service routine question |
Date: |
Tue, 29 Jul 2003 20:26:44 +1200 (NZST) |
Hi,
this is the disassembly dump of one of my ISRs (for
SIG_OUTPUT_COMPARE0 ) and it doesn't do very much
except call a function, if this one exists.
The compiler builds it nicely to be stored in the
proper vector section. What puzzles me is that it
doesn't seem to show any of the 'regular' ISR
characterists such as saving of all the registers in
the beginning of the routine, restoring them at the
end and returning with a reti instruction.
objs/avrTimers.o: file format elf32-avr
Disassembly of section .text:
00000000 <__vector_10>:
0: 80 91 00 00 lds r24, 0x0000
4: 8f 5f subi r24, 0xFF ; 255
6: 80 93 00 00 sts 0x0000, r24
a: e0 91 00 00 lds r30, 0x0000
e: f0 91 00 00 lds r31, 0x0000
12: 30 97 sbiw r30, 0x00 ; 0
14: 09 f0 breq .+2 ; 0x18
16: 09 95 icall
18: 0e 94 00 00 call 0x0
1c: 08 95 ret
The function in C looks like this:
#include <interrupt.h>
/* timer 0 */
INTERRUPT( SIG_OUTPUT_COMPARE0 )
{
KiwandaStartISR();
if ( avrTimerISR[AvrTimerCU0] !=
(KiwandaInterruptFunktie) Null)
avrTimerISR[AvrTimerCU0](); /* voer uit */
KiwandaEindeISR();
}
So, where does saving of the general and status
registers occur? Or am I missing something?
Thanks,
Ewout
http://personals.yahoo.com.au - Yahoo! Personals
- New people, new possibilities! Try Yahoo! Personals, FREE for a limited
period!
- [avr-gcc-list] interrupt service routine question,
Ewout <=