00001
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050 #ifndef _MACRO_H_
00051 #define _MACRO_H_
00052
00053 #ifdef __ICCAVR32__
00054 #include <intrinsics.h>
00055 #endif
00056
00064 #ifdef __ICCAVR32__
00065 #define AVR32_SET_SR_BIT(sregister, bitname) \
00066 volatile long avr32_sr_set_value; \
00067 avr32_sr_set_value = __get_system_register(sregister); \
00068 avr32_sr_set_value |= bitname; \
00069 __set_system_register(sregister, avr32_sr_set_value)
00070 #elif __GNUC__
00071 #define AVR32_SET_SR_BIT(sregister, bitname) \
00072 volatile long avr32_sr_set_value; \
00073 avr32_sr_set_value = __builtin_mfsr(sregister); \
00074 avr32_sr_set_value |= bitname; \
00075 __builtin_mtsr(sregister, avr32_sr_set_value)
00076 #else
00077 #error No known compiler used
00078 #endif
00079
00080
00088 #ifdef __ICCAVR32__
00089 #define AVR32_SET_SR_REG(sregister, regval) \
00090 __set_system_register(sregister, regval)
00091 #elif __GNUC__
00092 #define AVR32_SET_SR_REG(sregister, regval) \
00093 __builtin_mtsr(sregister, regval)
00094 #else
00095 #error No known compiler used
00096 #endif
00097
00098
00106 #ifdef __ICCAVR32__
00107 #define AVR32_CLEAR_SR_BIT(sregister, bitname) \
00108 volatile long avr32_sr_clear_value; \
00109 avr32_sr_clear_value = __get_system_register(sregister); \
00110 avr32_sr_clear_value &= ~bitname; \
00111 __set_system_register(sregister, avr32_sr_clear_value)
00112 #elif __GNUC__
00113 #define AVR32_CLEAR_SR_BIT(sregister, bitname) \
00114 volatile long avr32_sr_clear_value; \
00115 avr32_sr_clear_value = __builtin_mfsr(sregister); \
00116 avr32_sr_clear_value &= ~bitname; \
00117 __builtin_mtsr(sregister, avr32_sr_clear_value)
00118 #else
00119 #error No known compiler used
00120 #endif
00121
00122
00130 #ifdef __ICCAVR32__
00131 #define AVR32_TOGGLE_SR_BIT(sregister, bitname) \
00132 volatile long avr32_sr_toggle_value; \
00133 avr32_sr_toggle_value = __get_system_register(sregister); \
00134 avr32_sr_toggle_value ^= bitname; \
00135 __set_system_register(sregister, avr32_sr_toggle_value)
00136 #elif __GNUC__
00137 #define AVR32_TOGGLE_SR_BIT(sregister, bitname) \
00138 volatile long avr32_sr_toggle_value; \
00139 avr32_sr_toggle_value = __builtin_mfsr(sregister); \
00140 avr32_sr_toggle_value ^= bitname; \
00141 __builtin_mtsr(sregister, avr32_sr_toggle_value)
00142 #else
00143 #error No known compiler used
00144 #endif
00145
00146
00154 #ifdef __ICCAVR32__
00155 #define AVR32_READ_SR_REG(sregister, return_value) \
00156 return_value = __get_system_register(sregister)
00157 #elif __GNUC__
00158 #define AVR32_READ_SR_REG(sregister, return_value) \
00159 return_value = __builtin_mfsr(sregister)
00160 #else
00161 #error No known compiler used
00162 #endif
00163
00164 #endif
00165