macro.h

Go to the documentation of this file.
00001 /*This file has been prepared for Doxygen automatic documentation generation.*/
00021 /* Copyright (c) 2006, Atmel Corporation All rights reserved.
00022  *
00023  * Redistribution and use in source and binary forms, with or without
00024  * modification, are permitted provided that the following conditions are met:
00025  *
00026  * 1. Redistributions of source code must retain the above copyright notice,
00027  * this list of conditions and the following disclaimer.
00028  *
00029  * 2. Redistributions in binary form must reproduce the above copyright notice,
00030  * this list of conditions and the following disclaimer in the documentation
00031  * and/or other materials provided with the distribution.
00032  *
00033  * 3. The name of ATMEL may not be used to endorse or promote products derived
00034  * from this software without specific prior written permission.
00035  *
00036  * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR IMPLIED
00037  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
00038  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND
00039  * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT,
00040  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
00041  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00042  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
00043  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00044  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
00045  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
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 /* End _MACRO_H_ */
00163 

Generated on Tue Apr 4 12:10:14 2006 for AVR32000: Introduction to AVR32 header files by  doxygen 1.4.6