head 1.1; branch 1.1.1; access ; symbols noReleaseTag:1.1.1.1 noVendorName:1.1.1; locks ; strict; comment @# @; 1.1 date 2003.02.10.04.04.53; author doru; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 2003.02.10.04.04.53; author doru; state Exp; branches ; next ; desc @@ 1.1 log @Initial revision @ text @ Calls
Main Page   Modules   Related Pages  

Calls
[Pipeline details]

A few details
There are 4 call instructions, analogue to the jump instructions:
Apart from these, there is another kind of call, automatically inserted into the pipeline when an interrupt is processed. In addition to the regular calls, the implicit interrupt call also clears the general interrupt flag (flag I in the Status Register). This way, nested interrupts are disabled by default. However, they can be enabled explicitely. This behavior is questionable, but is implemented for the sake of AVR compatibility.
After an interrupt generates an implicit call, further interrupts are disabled for 4 clocks. This way, at least one instruction will be executed fron the called subroutine. Only after that, another interrupt can change the instruction flow.

All calls take 4 clocks.
Call state machine

pavr_pipe_calls_01.gif


Generated on Tue Dec 31 20:26:31 2002 for Pipelined AVR microcontroller by doxygen1.2.16
@ 1.1.1.1 log @Importing into repository the new directory structure. @ text @@