2004-04-19 Theodore A. Roth * include/avr/iom128.h: * include/avr/sfr_defs.h: * include/avr/signal.h: Make the compiler error out if signal name is misspeeled. Index: include/avr/iom128.h =================================================================== RCS file: /cvsroot/avr-libc/avr-libc/include/avr/iom128.h,v retrieving revision 1.12 diff -u -p -p -r1.12 iom128.h --- include/avr/iom128.h 20 Oct 2003 18:54:16 -0000 1.12 +++ include/avr/iom128.h 19 Apr 2004 22:13:05 -0000 @@ -346,40 +346,40 @@ /* Interrupt vectors */ -#define SIG_INTERRUPT0 _VECTOR(1) -#define SIG_INTERRUPT1 _VECTOR(2) -#define SIG_INTERRUPT2 _VECTOR(3) -#define SIG_INTERRUPT3 _VECTOR(4) -#define SIG_INTERRUPT4 _VECTOR(5) -#define SIG_INTERRUPT5 _VECTOR(6) -#define SIG_INTERRUPT6 _VECTOR(7) -#define SIG_INTERRUPT7 _VECTOR(8) -#define SIG_OUTPUT_COMPARE2 _VECTOR(9) -#define SIG_OVERFLOW2 _VECTOR(10) -#define SIG_INPUT_CAPTURE1 _VECTOR(11) -#define SIG_OUTPUT_COMPARE1A _VECTOR(12) -#define SIG_OUTPUT_COMPARE1B _VECTOR(13) -#define SIG_OVERFLOW1 _VECTOR(14) -#define SIG_OUTPUT_COMPARE0 _VECTOR(15) -#define SIG_OVERFLOW0 _VECTOR(16) -#define SIG_SPI _VECTOR(17) -#define SIG_UART0_RECV _VECTOR(18) -#define SIG_UART0_DATA _VECTOR(19) -#define SIG_UART0_TRANS _VECTOR(20) -#define SIG_ADC _VECTOR(21) -#define SIG_EEPROM_READY _VECTOR(22) -#define SIG_COMPARATOR _VECTOR(23) -#define SIG_OUTPUT_COMPARE1C _VECTOR(24) -#define SIG_INPUT_CAPTURE3 _VECTOR(25) -#define SIG_OUTPUT_COMPARE3A _VECTOR(26) -#define SIG_OUTPUT_COMPARE3B _VECTOR(27) -#define SIG_OUTPUT_COMPARE3C _VECTOR(28) -#define SIG_OVERFLOW3 _VECTOR(29) -#define SIG_UART1_RECV _VECTOR(30) -#define SIG_UART1_DATA _VECTOR(31) -#define SIG_UART1_TRANS _VECTOR(32) -#define SIG_2WIRE_SERIAL _VECTOR(33) -#define SIG_SPM_READY _VECTOR(34) +#define SIG_INTERRUPT0(err, type) _SIG_VECTOR(1, type) +#define SIG_INTERRUPT1(err, type) _SIG_VECTOR(2, type) +#define SIG_INTERRUPT2(err, type) _SIG_VECTOR(3, type) +#define SIG_INTERRUPT3(err, type) _SIG_VECTOR(4, type) +#define SIG_INTERRUPT4(err, type) _SIG_VECTOR(5, type) +#define SIG_INTERRUPT5(err, type) _SIG_VECTOR(6, type) +#define SIG_INTERRUPT6(err, type) _SIG_VECTOR(7, type) +#define SIG_INTERRUPT7(err, type) _SIG_VECTOR(8, type) +#define SIG_OUTPUT_COMPARE2(err, type) _SIG_VECTOR(9, type) +#define SIG_OVERFLOW2(err, type) _SIG_VECTOR(10, type) +#define SIG_INPUT_CAPTURE1(err, type) _SIG_VECTOR(11, type) +#define SIG_OUTPUT_COMPARE1A(err, type) _SIG_VECTOR(12, type) +#define SIG_OUTPUT_COMPARE1B(err, type) _SIG_VECTOR(13, type) +#define SIG_OVERFLOW1(err, type) _SIG_VECTOR(14, type) +#define SIG_OUTPUT_COMPARE0(err, type) _SIG_VECTOR(15, type) +#define SIG_OVERFLOW0(err, type) _SIG_VECTOR(16, type) +#define SIG_SPI(err, type) _SIG_VECTOR(17, type) +#define SIG_UART0_RECV(err, type) _SIG_VECTOR(18, type) +#define SIG_UART0_DATA(err, type) _SIG_VECTOR(19, type) +#define SIG_UART0_TRANS(err, type) _SIG_VECTOR(20, type) +#define SIG_ADC(err, type) _SIG_VECTOR(21, type) +#define SIG_EEPROM_READY(err, type) _SIG_VECTOR(22, type) +#define SIG_COMPARATOR(err, type) _SIG_VECTOR(23, type) +#define SIG_OUTPUT_COMPARE1C(err, type) _SIG_VECTOR(24, type) +#define SIG_INPUT_CAPTURE3(err, type) _SIG_VECTOR(25, type) +#define SIG_OUTPUT_COMPARE3A(err, type) _SIG_VECTOR(26, type) +#define SIG_OUTPUT_COMPARE3B(err, type) _SIG_VECTOR(27, type) +#define SIG_OUTPUT_COMPARE3C(err, type) _SIG_VECTOR(28, type) +#define SIG_OVERFLOW3(err, type) _SIG_VECTOR(29, type) +#define SIG_UART1_RECV(err, type) _SIG_VECTOR(30, type) +#define SIG_UART1_DATA(err, type) _SIG_VECTOR(31, type) +#define SIG_UART1_TRANS(err, type) _SIG_VECTOR(32, type) +#define SIG_2WIRE_SERIAL(err, type) _SIG_VECTOR(33, type) +#define SIG_SPM_READY(err, type) _SIG_VECTOR(34, type) #define _VECTORS_SIZE 140 Index: include/avr/sfr_defs.h =================================================================== RCS file: /cvsroot/avr-libc/avr-libc/include/avr/sfr_defs.h,v retrieving revision 1.11 diff -u -p -p -r1.11 sfr_defs.h --- include/avr/sfr_defs.h 9 Oct 2003 04:27:29 -0000 1.11 +++ include/avr/sfr_defs.h 19 Apr 2004 22:13:05 -0000 @@ -189,6 +189,17 @@ #define _VECTOR(N) __vector_ ## N #endif +#ifdef __cplusplus +#define _SIG_VECTOR(sig_num, attr) \ +extern "C" void _VECTOR(sig_num) (void); \ +void _VECTOR(sig_num) (void) __attribute__ ((attr)); \ +void _VECTOR(sig_num) (void) +#else +#define _SIG_VECTOR(sig_num, attr) \ +void _VECTOR(sig_num) (void) __attribute__ ((attr)); \ +void _VECTOR(sig_num) (void) +#endif + #ifndef __ASSEMBLER__ Index: include/avr/signal.h =================================================================== RCS file: /cvsroot/avr-libc/avr-libc/include/avr/signal.h,v retrieving revision 1.7 diff -u -p -p -r1.7 signal.h --- include/avr/signal.h 30 Sep 2003 23:05:17 -0000 1.7 +++ include/avr/signal.h 19 Apr 2004 22:13:05 -0000 @@ -40,16 +40,7 @@ Introduces an interrupt handler function that runs with global interrupts initially disabled. */ -#ifdef __cplusplus -#define SIGNAL(signame) \ -extern "C" void signame(void); \ -void signame (void) __attribute__ ((signal)); \ -void signame (void) -#else -#define SIGNAL(signame) \ -void signame (void) __attribute__ ((signal)); \ -void signame (void) -#endif +#define SIGNAL(signame) signame(("<- Misspelled SIG name"), signal) /** \def INTERRUPT(signame) \ingroup avr_interrupts @@ -59,16 +50,7 @@ void signame (void) Introduces an interrupt handler function that runs with global interrupts initially enabled. This allows interrupt handlers to be interrupted. */ -#ifdef __cplusplus -#define INTERRUPT(signame) \ -extern "C" void signame(void); \ -void signame (void) __attribute__ ((interrupt)); \ -void signame (void) -#else -#define INTERRUPT(signame) \ -void signame (void) __attribute__ ((interrupt)); \ -void signame (void) -#endif +#define INTERRUPT(signame) signame(("<- Misspelled INT name"), interrupt) /** \def EMPTY_INTERRUPT(signame) \ingroup avr_interrupts @@ -81,18 +63,9 @@ void signame (void) Example: \code EMPTY_INTERRUPT(SIG_ADC);\endcode */ -#ifdef __cplusplus -#define EMPTY_INTERRUPT(signame) \ -extern "C" void signame(void); \ -void signame (void) __attribute__ ((naked)); \ -void signame (void) { __asm__ __volatile__ ("reti" ::); } -#else -#define EMPTY_INTERRUPT(signame) \ -void signame (void) __attribute__ ((naked)); \ -void signame (void) { __asm__ __volatile__ ("reti" ::); } -#endif - - +#define EMPTY_INTERRUPT(signame) \ +signame(("<- Misspelled EMPTY INT name"), naked) \ +{ __asm__ __volatile__ ("reti" ::); } /address@hidden/