2004-04-21 Theodore A. Roth * include/avr/sfr_defs.h: * include/avr/signal.h: 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 21 Apr 2004 18:20:17 -0000 @@ -186,7 +186,57 @@ /address@hidden/ #ifndef _VECTOR -#define _VECTOR(N) __vector_ ## N +# define _VECTOR(N) __vector_ ## N +# define __vector_1_TMP(err) __vector_1 +# define __vector_2_TMP(err) __vector_2 +# define __vector_3_TMP(err) __vector_3 +# define __vector_4_TMP(err) __vector_4 +# define __vector_5_TMP(err) __vector_5 +# define __vector_6_TMP(err) __vector_6 +# define __vector_7_TMP(err) __vector_7 +# define __vector_8_TMP(err) __vector_8 +# define __vector_9_TMP(err) __vector_9 +# define __vector_10_TMP(err) __vector_10 +# define __vector_11_TMP(err) __vector_11 +# define __vector_12_TMP(err) __vector_12 +# define __vector_13_TMP(err) __vector_13 +# define __vector_14_TMP(err) __vector_14 +# define __vector_15_TMP(err) __vector_15 +# define __vector_16_TMP(err) __vector_16 +# define __vector_17_TMP(err) __vector_17 +# define __vector_18_TMP(err) __vector_18 +# define __vector_19_TMP(err) __vector_19 +# define __vector_20_TMP(err) __vector_20 +# define __vector_21_TMP(err) __vector_21 +# define __vector_22_TMP(err) __vector_22 +# define __vector_23_TMP(err) __vector_23 +# define __vector_24_TMP(err) __vector_24 +# define __vector_25_TMP(err) __vector_25 +# define __vector_26_TMP(err) __vector_26 +# define __vector_27_TMP(err) __vector_27 +# define __vector_28_TMP(err) __vector_28 +# define __vector_29_TMP(err) __vector_29 +# define __vector_30_TMP(err) __vector_30 +# define __vector_31_TMP(err) __vector_31 +# define __vector_32_TMP(err) __vector_32 +# define __vector_33_TMP(err) __vector_33 +# define __vector_34_TMP(err) __vector_34 +# define __vector_35_TMP(err) __vector_35 +# define __vector_36_TMP(err) __vector_36 +# define __vector_37_TMP(err) __vector_37 +# define __vector_38_TMP(err) __vector_38 +# define __vector_39_TMP(err) __vector_39 +# define __vector_40_TMP(err) __vector_40 +# define __vector_41_TMP(err) __vector_41 +# define __vector_42_TMP(err) __vector_42 +# define __vector_43_TMP(err) __vector_43 +# define __vector_44_TMP(err) __vector_44 +# define __vector_45_TMP(err) __vector_45 +# define __vector_46_TMP(err) __vector_46 +# define __vector_47_TMP(err) __vector_47 +# define __vector_48_TMP(err) __vector_48 +# define __vector_49_TMP(err) __vector_49 +# define __vector_50_TMP(err) __vector_50 #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 21 Apr 2004 18:20:17 -0000 @@ -28,6 +28,16 @@ #ifndef _AVR_SIGNAL_H_ #define _AVR_SIGNAL_H_ +#define _SIGNAME_TMP(signame) \ + signame ## _TMP("Misspelled signal name ->" #signame) + +#ifdef __cplusplus +# define _CPLUSPLUS_SIG_DECL(signame) \ +extern "C" void _SIGNAME_TMP(signame)(void); +#else +# define _CPLUSPLUS_SIG_DECL(signame) +#endif + /** \name Macros for writing interrupt handler functions */ /address@hidden/ @@ -40,15 +50,13 @@ 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) +#ifdef __ASSEMBLER__ +# define SIGNAL(signame) _SIGNAME_TMP(signame) #else -#define SIGNAL(signame) \ -void signame (void) __attribute__ ((signal)); \ -void signame (void) +# define SIGNAL(signame) \ +_CPLUSPLUS_SIG_DECL(signame) \ +void _SIGNAME_TMP(signame) (void) __attribute__ ((signal)); \ +void _SIGNAME_TMP(signame) (void) #endif /** \def INTERRUPT(signame) @@ -59,15 +67,13 @@ 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) +#ifdef __ASSEMBLER__ +# define INTERRUPT(signame) _SIGNAME_TMP(signame) #else -#define INTERRUPT(signame) \ -void signame (void) __attribute__ ((interrupt)); \ -void signame (void) +# define INTERRUPT(signame) \ +_CPLUSPLUS_SIG_DECL(signame) \ +void _SIGNAME_TMP(signame) (void) __attribute__ ((interrupt)); \ +void _SIGNAME_TMP(signame) (void) #endif /** \def EMPTY_INTERRUPT(signame) @@ -81,18 +87,14 @@ 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" ::); } +#ifdef __ASSEMBLER__ +# define INTERRUPT(signame) _SIGNAME_TMP(signame): reti #else -#define EMPTY_INTERRUPT(signame) \ -void signame (void) __attribute__ ((naked)); \ -void signame (void) { __asm__ __volatile__ ("reti" ::); } +# define EMPTY_INTERRUPT(signame) \ +_CPLUSPLUS_SIG_DECL(signame) \ +void _SIGNAME_TMP(signame) (void) __attribute__ ((naked)); \ +void _SIGNAME_TMP(signame) (void) { __asm__ __volatile__ ("reti" ::); } #endif - - /address@hidden/