00001
00021
00022
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 #ifndef _MACRO_H_
00049 #define _MACRO_H_
00050
00051 #ifdef __ICCAVR32__
00052 #include <intrinsics.h>
00053 #endif
00054
00062 #ifdef __ICCAVR32__
00063 #define AVR32_SET_SR_BIT(sregister, bitname) \
00064 volatile long avr32_sr_set_value; \
00065 avr32_sr_set_value = __get_system_register(sregister); \
00066 avr32_sr_set_value |= bitname; \
00067 __set_system_register(sregister, avr32_sr_set_value)
00068 #elif __GNUC__
00069 #define AVR32_SET_SR_BIT(sregister, bitname) \
00070 volatile long avr32_sr_set_value; \
00071 avr32_sr_set_value = __builtin_mfsr(sregister); \
00072 avr32_sr_set_value |= bitname; \
00073 __builtin_mtsr(sregister, avr32_sr_set_value)
00074 #else
00075 #error No known compiler used
00076 #endif
00077
00078
00086 #ifdef __ICCAVR32__
00087 #define AVR32_SET_SR_REG(sregister, regval) \
00088 __set_system_register(sregister, regval)
00089 #elif __GNUC__
00090 #define AVR32_SET_SR_REG(sregister, regval) \
00091 __builtin_mtsr(sregister, regval)
00092 #else
00093 #error No known compiler used
00094 #endif
00095
00096
00104 #ifdef __ICCAVR32__
00105 #define AVR32_CLEAR_SR_BIT(sregister, bitname) \
00106 volatile long avr32_sr_clear_value; \
00107 avr32_sr_clear_value = __get_system_register(sregister); \
00108 avr32_sr_clear_value &= ~bitname; \
00109 __set_system_register(sregister, avr32_sr_clear_value)
00110 #elif __GNUC__
00111 #define AVR32_CLEAR_SR_BIT(sregister, bitname) \
00112 volatile long avr32_sr_clear_value; \
00113 avr32_sr_clear_value = __builtin_mfsr(sregister); \
00114 avr32_sr_clear_value &= ~bitname; \
00115 __builtin_mtsr(sregister, avr32_sr_clear_value)
00116 #else
00117 #error No known compiler used
00118 #endif
00119
00120
00128 #ifdef __ICCAVR32__
00129 #define AVR32_TOGGLE_SR_BIT(sregister, bitname) \
00130 volatile long avr32_sr_toggle_value; \
00131 avr32_sr_toggle_value = __get_system_register(sregister); \
00132 avr32_sr_toggle_value ^= bitname; \
00133 __set_system_register(sregister, avr32_sr_toggle_value)
00134 #elif __GNUC__
00135 #define AVR32_TOGGLE_SR_BIT(sregister, bitname) \
00136 volatile long avr32_sr_toggle_value; \
00137 avr32_sr_toggle_value = __builtin_mfsr(sregister); \
00138 avr32_sr_toggle_value ^= bitname; \
00139 __builtin_mtsr(sregister, avr32_sr_toggle_value)
00140 #else
00141 #error No known compiler used
00142 #endif
00143
00144
00152 #ifdef __ICCAVR32__
00153 #define AVR32_READ_SR_REG(sregister, return_value) \
00154 return_value = __get_system_register(sregister)
00155 #elif __GNUC__
00156 #define AVR32_READ_SR_REG(sregister, return_value) \
00157 return_value = __builtin_mfsr(sregister)
00158 #else
00159 #error No known compiler used
00160 #endif
00161
00162 #endif
00163