Altered the Mass Storage Host class driver so that SCSI data STALLs from the attached...
[pub/USBasp.git] / LUFA / Common / Attributes.h
index bb07417..92948e1 100644 (file)
 */
 
 /** \file
 */
 
 /** \file
- *  \brief GCC special function/variable attribute macros.
+ *  \brief Special function/variable attribute macros.
  *
  *
- *  \copydetails Group_GCCAttributes
+ *  \copydetails Group_FuncVarAttributes
  *
  *  \note Do not include this file directly, rather include the Common.h header file instead to gain this file's
  *        functionality.
  */
 
 /** \ingroup Group_Common
  *
  *  \note Do not include this file directly, rather include the Common.h header file instead to gain this file's
  *        functionality.
  */
 
 /** \ingroup Group_Common
- *  \defgroup Group_GCCAttributes Function/Variable Attributes
- *  \brief GCC special function/variable attribute macros.
+ *  \defgroup Group_FuncVarAttributes Function/Variable Attributes
+ *  \brief Special function/variable attribute macros.
  *
  *
- *  This module contains macros for applying GCC specific attributes to functions and variables to control various
+ *  This module contains macros for applying specific attributes to functions and variables to control various
  *  optimizer and code generation features of the compiler. Attributes may be placed in the function prototype
  *  or variable declaration in any order, and multiple attributes can be specified for a single item via a space
  *  separated list.
  *  optimizer and code generation features of the compiler. Attributes may be placed in the function prototype
  *  or variable declaration in any order, and multiple attributes can be specified for a single item via a space
  *  separated list.
                                 *  identical name (in which case the weak reference is discarded at link time).
                                 */
                                #define ATTR_WEAK                   __attribute__ ((weak))
                                 *  identical name (in which case the weak reference is discarded at link time).
                                 */
                                #define ATTR_WEAK                   __attribute__ ((weak))
-
-                               /** Forces the compiler to not automatically zero the given global variable on startup, so that the
-                                *  current RAM contents is retained. Under most conditions this value will be random due to the
-                                *  behaviour of volatile memory once power is removed, but may be used in some specific circumstances,
-                                *  like the passing of values back after a system watchdog reset.
-                                */
-                               #define ATTR_NO_INIT                __attribute__ ((section (".noinit")))
                        #endif
 
                        #endif
 
+                       /** Forces the compiler to not automatically zero the given global variable on startup, so that the
+                        *  current RAM contents is retained. Under most conditions this value will be random due to the
+                        *  behaviour of volatile memory once power is removed, but may be used in some specific circumstances,
+                        *  like the passing of values back after a system watchdog reset.
+                        */
+                       #define ATTR_NO_INIT                    __attribute__ ((section (".noinit")))
+
                        /** Places the function in one of the initialization sections, which execute before the main function
                         *  of the application. Refer to the avr-libc manual for more information on the initialization sections.
                         *
                         *  \param[in] SectionIndex  Initialization section number where the function should be placed.
                         */
                        /** Places the function in one of the initialization sections, which execute before the main function
                         *  of the application. Refer to the avr-libc manual for more information on the initialization sections.
                         *
                         *  \param[in] SectionIndex  Initialization section number where the function should be placed.
                         */
-                       #define ATTR_INIT_SECTION(SectionIndex) __attribute__ ((naked, section (".init" #SectionIndex )))
+                       #define ATTR_INIT_SECTION(SectionIndex) __attribute__ ((used, naked, section (".init" #SectionIndex )))
 
                        /** Marks a function as an alias for another function.
                         *
 
                        /** Marks a function as an alias for another function.
                         *