avr-gcc-list
[Top][All Lists]
Advanced

[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!


reply via email to

[Prev in Thread] Current Thread [Next in Thread]