X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/0c2ad9eb349e1a5676468af3b407329dde4a53b4..0da99447d3e88e83f9977501bee56af5c7aa56c0:/LUFA/Common/CompilerSpecific.h diff --git a/LUFA/Common/CompilerSpecific.h b/LUFA/Common/CompilerSpecific.h index 6b4826aa5..ad2d075c4 100644 --- a/LUFA/Common/CompilerSpecific.h +++ b/LUFA/Common/CompilerSpecific.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2011. + Copyright (C) Dean Camera, 2012. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2012 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -29,7 +29,7 @@ */ /** \file - * \brief Compiler specific macros for code optimization and correctness. + * \brief Compiler specific definitions for code optimization and correctness. * * \copydetails Group_CompilerSpecific * @@ -38,12 +38,12 @@ */ /** \ingroup Group_Common - * \defgroup Group_CompilerSpecific Compiler Specific Macros - * \brief Compiler specific macros for code optimization and correctness. + * \defgroup Group_CompilerSpecific Compiler Specific Definitions + * \brief Compiler specific definitions for code optimization and correctness. * - * Compiler specific macros to expose certain compiler features which may increase the level of code optimization + * Compiler specific definitions to expose certain compiler features which may increase the level of code optimization * for a specific compiler, or correct certain issues that may be present such as memory barriers for use in conjunction - * with atomic variable access. + * with atomic variable access. * * Where possible, on alternative compilers, these macros will either have no effect, or default to returning a sane value * so that they can be used in existing code without the need for extra compiler checks in the user application code. @@ -70,26 +70,25 @@ * * \param[in, out] StructPtr Pointer to a structure which is to be forced into indirect access mode. */ - #define GCC_FORCE_POINTER_ACCESS(StructPtr) __asm__ __volatile__("" : "=b" (StructPtr) : "0" (StructPtr)) + #define GCC_FORCE_POINTER_ACCESS(StructPtr) __asm__ __volatile__("" : "=b" (StructPtr) : "0" (StructPtr)) /** Forces GCC to create a memory barrier, ensuring that memory accesses are not reordered past the barrier point. * This can be used before ordering-critical operations, to ensure that the compiler does not re-order the resulting * assembly output in an unexpected manner on sections of code that are ordering-specific. */ - #define GCC_MEMORY_BARRIER() __asm__ __volatile__("" ::: "memory"); - - /** Evaluates to boolean true if the specified value can be determined at compile time to be a constant value - * when compiling under GCC. + #define GCC_MEMORY_BARRIER() __asm__ __volatile__("" ::: "memory"); + + /** Determines if the specified value can be determined at compile-time to be a constant value when compiling under GCC. * - * \param[in] x Value to check compile time constantness of. + * \param[in] x Value to check compile-time constantness of. * - * \return Boolean true if the given value is known to be a compile time constant. + * \return Boolean true if the given value is known to be a compile time constant, false otherwise. */ - #define GCC_IS_COMPILE_CONST(x) __builtin_constant_p(x) + #define GCC_IS_COMPILE_CONST(x) __builtin_constant_p(x) #else #define GCC_FORCE_POINTER_ACCESS(StructPtr) #define GCC_MEMORY_BARRIER() - #define GCC_IS_COMPILE_CONST(x) 0 + #define GCC_IS_COMPILE_CONST(x) 0 #endif #endif