You can do it this way but you won't have precise control over disable/restore timing. So you will typically disable interrupts longer than is needed.

Also disabling all interrupts is often not what you need. Disabling specfic interrupts is more palatable on real time systems.

NMI is a feature not a limitation - it supposed to stop such software hanging up the CPU.

BTW gcc provides atomic operations on other ports.

Andy



-----Original Message-----
From: Anatoly Sokolov <[EMAIL PROTECTED]>
To: Weddington, Eric <[EMAIL PROTECTED]>; David Brown <[EMAIL PROTECTED]>; [email protected]
Sent: Thu, 22 May 2008 1:08 pm
Subject: Re: [avr-gcc-list] Avr-gcc Produces Incorrect Code with -Os



Hi.

An alternative way to handle this sort of thing would be to implement
a
"critical" function attribute like in the msp430 port of gcc - a
function with this attribute has interrupts disabled at the start,
and
restored at the end.

 It will work for for tiny and mega devices, but xmega devices have
Non-Maskable Interrupts, and clearing of the I-bit does not guarantee
full continuity execution of a code.

I shall make a patch for "critical" attribute.

Anatoly.



_______________________________________________
AVR-GCC-list mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/avr-gcc-list



_______________________________________________
AVR-GCC-list mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/avr-gcc-list

Reply via email to