macro.h

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

Generated on Thu Oct 18 09:30:01 2007 for AVR32113 Configuration and Use of the Memory Management Unit by  doxygen 1.5.3