[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[avr-libc-dev] [bug #26734] Unsafe SP register changes in ISR_NOBLOCK in
From: |
Anatoly Sokolov |
Subject: |
[avr-libc-dev] [bug #26734] Unsafe SP register changes in ISR_NOBLOCK interrupt handlers |
Date: |
Wed, 03 Jun 2009 03:07:01 +0000 |
User-agent: |
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; MRA 5.0 (build 02094); SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618) |
Follow-up Comment #1, bug #26734 (project avr-libc):
The ISR(INT0_vect,ISR_NOBLOCK) macro expand in:
void __vector_1 (void) __attribute__ ((signal,used, externally_visible))
__attribute__((interrupt)); void __vector_1 (void)
This code confused the GCC. The 'interrupt' attribute makes emit the 'sei'
instruction but the 'signal' attribute makes don't disable interrupt when SP
reg is changed.
This is bad use 'interrupt' and 'signal' attribute simultaneously.
1. I will add in the GCC code for checking incorrect attributes use. i.e use
'interrupt' and 'signal' attribute simultaneously for one function.
2. avr-libc should be modified and don't use 'interrupt' and 'signal'
attribute simultaneously.
Anatoly.
_______________________________________________________
Reply to this item at:
<http://savannah.nongnu.org/bugs/?26734>
_______________________________________________
Message sent via/by Savannah
http://savannah.nongnu.org/