[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [avr-libc-dev] Re: [avr-libc-commit] [2158] Submitted by Jan Waclawe
From: |
Jan Waclawek |
Subject: |
Re: [avr-libc-dev] Re: [avr-libc-commit] [2158] Submitted by Jan Waclawek: |
Date: |
Thu, 10 Jun 2010 22:36:38 +0200 |
#$%^... sorry. Mea culpa.
Joerg, would you please fix it? Thanks.
Jan
On Thu, 10 Jun 2010 22:25:12 +0200
Wouter van Gulik <address@hidden> wrote:
> Joerg Wunsch schreef:
> >
> > +
> > +\code
> > +#define cli() __asm volatile( "cli" ::: "memory" )
> > +#define sei() __asm volatile( "sei" ::: "memory" )
> > +
> > +unsigned int ivar;
> > +
> > +void test2( unsigned int val )
> > +{
> > + val = 65535U / val;
> > +
> > + cli();
> > +
> > + ivar = val;
> > +
> > + sei();
> > +}
> > +\endcode
> > +
> > +compiles with optimisations switched on (-Os) to
> > +
> > +\verbatim
> > +00000112 <test2>:
> > + 112: bc 01 movw r22, r24
> > + 114: f8 94 cli
> > + 116: 8f ef ldi r24, 0xFF ; 255
> > + 118: 9f ef ldi r25, 0xFF ; 255
> > + 11a: 0e 94 96 00 call 0x12c ; 0x12c <__udivmodhi4>
> > + 11e: 70 93 01 02 sts 0x0201, r23
> > + 122: 60 93 00 02 sts 0x0200, r22
> > + 126: 78 94 sei
> > + 128: 08 95 ret
> > +\endverbatim
> > +
> > +where the potentially slow multiplication is moved across cli(),
> > +resulting in interrupts to be disabled longer than intended.
> There is "typo", the texts talks about multiplication instead of divide.
>
> HTH,
>
> Wouter
>