[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [avr-libc-dev] [bug #14616] definition of sei() in interrupts.h is f
From: |
Dmitry K. |
Subject: |
Re: [avr-libc-dev] [bug #14616] definition of sei() in interrupts.h is faulty |
Date: |
Tue, 27 Sep 2005 14:03:46 +1100 |
User-agent: |
KMail/1.5 |
On Tuesday 27 September 2005 01:54, Björn wrote:
> Follow-up Comment #5, bug #14616 (project avr-libc):
>
> The unfortunate thing is, that using volatile is not enough. Even if it
> works for your extremely simple test case: I am having a more complex test
> case example in my application code, where it does *not* work because gcc
> reorders the statements.
[...]
I am discouraged.
I have try the next example with 3 compilers:
3.3.5, 3.4.4 and 4.0.0
with 2 optimization levels:
-Os, -O3
All 6 results are fine: write to volatile is not reordered.
Dmitry.
Example is:
~~~~~~~~~~
#include <avr/io.h>
unsigned int volatile val;
void foo1 (void)
{
unsigned char tmp = SREG;
asm volatile ("cli");
val = 100;
SREG = tmp;
}
void foo2 (void)
{
asm volatile ("cli");
val = 100;
asm volatile ("sei");
}
- [avr-libc-dev] [bug #14616] definition of sei() in interrupts.h is faulty, anonymous, 2005/09/22
- [avr-libc-dev] [bug #14616] definition of sei() in interrupts.h is faulty, anonymous, 2005/09/22
- [avr-libc-dev] [bug #14616] definition of sei() in interrupts.h is faulty, anonymous, 2005/09/22
- [avr-libc-dev] [bug #14616] definition of sei() in interrupts.h is faulty, anonymous, 2005/09/23
- [avr-libc-dev] [bug #14616] definition of sei() in interrupts.h is faulty, anonymous, 2005/09/23
- [avr-libc-dev] [bug #14616] definition of sei() in interrupts.h is faulty, anonymous, 2005/09/26
- Re: [avr-libc-dev] [bug #14616] definition of sei() in interrupts.h is faulty, Joerg Wunsch, 2005/09/26
- Re: [avr-libc-dev] [bug #14616] definition of sei() in interrupts.h is faulty, Russell Shaw, 2005/09/26
- Re: [avr-libc-dev] [bug #14616] definition of sei() in interrupts.h is faulty, Joerg Wunsch, 2005/09/27
- Re: [avr-libc-dev] [bug #14616] definition of sei() in interrupts.h is faulty,
Dmitry K. <=
- Re: [avr-libc-dev] [bug #14616] definition of sei() in interrupts.h is faulty, Björn Haase, 2005/09/27