AVR-LIbC's ISR-macros lead to confusing results for code like, e.g.

#include <avr/io.h>
#include <avr/interrupt.h>

void *p;

ISR (ADC_vect, ISR_NOBLOCK)
{
    char c[10];
    p = c;
}

which resolves a.a. to

void __vector_21 (void)
__attribute__ ((signal,used,externally_visible)) __attribute__((interrupt));


Which states that IRQs are turned off (signal) and IRQs are turned on (interrupt) at the same time.

This leads to unexpected code generated by the compiler.

Thus, I'd like to introduce an error in avr-gcc saying

"function can only be one of 'interrupt', 'signal', 'OS_task', 'OS_main'
at the same time"

Ideas?

Johann

_______________________________________________
AVR-GCC-list mailing list
AVR-GCC-list@nongnu.org
https://lists.nongnu.org/mailman/listinfo/avr-gcc-list

Reply via email to