[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [avr-gcc-list] gcc prolog incorrect?

From: Ben L. Titzer
Subject: Re: [avr-gcc-list] gcc prolog incorrect?
Date: Sun, 6 Mar 2005 19:24:59 -0800

It seems as though the code restores the interrupt mask to exactly as it was before the call; if the cli were to come first, the I flag would be written to 0 and thus would not be restored correctly.

The thing I wonder about is what happens if there is an interrupt between 72 and 73....It seems to me that those two instructions should be swapped...

On Mar 6, 2005, at 6:12 PM, address@hidden wrote:

Is it possible that gcc prolog is incorrect?

  69 000a 0FB6              in __tmp_reg__,__SREG__
  70 000c F894              cli
  71 000e DEBF              out __SP_H__,r29
  72 0010 0FBE              out __SREG__,__tmp_reg__
  73 0012 CDBF              out __SP_L__,r28

This is the code used to adjust the stack pointer for a regular function with interrupts active. Basically it turns of interupts so it can chnage both bytes of SP without a problem.

But saved BEFORE interrupts are disabled. Doesn't that mean that if interrupts were disabled during ISR, a function could re-enabled them when SREG is restored?

Andy Hutchinson

Switch to Netscape Internet Service.
As low as $9.95 a month -- Sign up today at http://isp.netscape.com/register

Netscape. Just the Net You Need.

New! Netscape Toolbar for Internet Explorer
Search from anywhere on the Web and block those annoying pop-ups.
Download now at http://channels.netscape.com/ns/search/install.jsp

AVR-GCC-list mailing list

Imagination is more important than knowledge.
-- Albert Einstein

reply via email to

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