2013-05-06 07:50:19 +02:00
/**************************************************************************/
/*!
@ file compiler_iar . h
@ author hathach ( tinyusb . org )
2012-11-26 11:19:26 +01:00
2013-05-06 07:50:19 +02:00
@ section LICENSE
Software License Agreement ( BSD License )
Copyright ( c ) 2013 , hathach ( tinyusb . org )
All rights reserved .
Redistribution and use in source and binary forms , with or without
modification , are permitted provided that the following conditions are met :
1. Redistributions of source code must retain the above copyright
notice , this list of conditions and the following disclaimer .
2. Redistributions in binary form must reproduce the above copyright
notice , this list of conditions and the following disclaimer in the
documentation and / or other materials provided with the distribution .
3. Neither the name of the copyright holders nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission .
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ' ' AS IS ' ' AND ANY
EXPRESS OR IMPLIED WARRANTIES , INCLUDING , BUT NOT LIMITED TO , THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED . IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
DIRECT , INDIRECT , INCIDENTAL , SPECIAL , EXEMPLARY , OR CONSEQUENTIAL DAMAGES
INCLUDING , BUT NOT LIMITED TO , PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES ;
LOSS OF USE , DATA , OR PROFITS ; OR BUSINESS INTERRUPTION HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY , WHETHER IN CONTRACT , STRICT LIABILITY , OR TORT
INCLUDING NEGLIGENCE OR OTHERWISE ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE , EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE .
This file is part of the tinyusb stack .
*/
/**************************************************************************/
2012-11-26 11:19:26 +01:00
2012-11-29 04:41:33 +01:00
/** \file
2012-12-04 12:18:29 +01:00
* \ brief IAR Compiler
2012-11-29 04:41:33 +01:00
*/
2012-12-04 12:18:29 +01:00
/** \ingroup Group_Compiler
* \ defgroup Group_IAR IAR ARM
2012-11-29 04:41:33 +01:00
* @ {
*/
2012-12-04 12:18:29 +01:00
# ifndef _TUSB_COMPILER_IAR_H_
# define _TUSB_COMPILER_IAR_H_
2012-11-27 09:21:47 +01:00
2012-12-04 12:18:29 +01:00
# ifdef __cplusplus
extern " C " {
# endif
2012-11-29 10:32:49 +01:00
2013-09-19 11:11:11 +02:00
# define ALIGN_OF(x) __ALIGNOF__(x)
2013-03-04 09:01:33 +01:00
2013-09-19 11:11:11 +02:00
# define ATTR_PACKED_STRUCT(x) __packed x
2012-12-04 12:18:29 +01:00
# define ATTR_PREPACKED __packed
# define ATTR_PACKED
2012-11-26 11:19:26 +01:00
2013-09-19 11:11:11 +02:00
# define ATTR_ALIGNED(Bytes) ATTR_ALIGNED_##Bytes
# define ATTR_ALIGNED_4096 _Pragma("data_alignment=4096")
# define ATTR_ALIGNED_2048 _Pragma("data_alignment=2048")
# define ATTR_ALIGNED_256 _Pragma("data_alignment=256")
# define ATTR_ALIGNED_128 _Pragma("data_alignment=128")
# define ATTR_ALIGNED_64 _Pragma("data_alignment=64")
# define ATTR_ALIGNED_48 _Pragma("data_alignment=48")
# define ATTR_ALIGNED_32 _Pragma("data_alignment=32")
2014-03-04 09:19:50 +01:00
# define ATTR_ALIGNED_16 _Pragma("data_alignment=16")
2013-09-19 11:11:11 +02:00
# define ATTR_ALIGNED_4 _Pragma("data_alignment=4")
# ifndef ATTR_ALWAYS_INLINE
/// Generally, functions are not inlined unless optimization is specified. For functions declared inline, this attribute inlines the function even if no optimization level is specified
# define ATTR_ALWAYS_INLINE error
# endif
# define ATTR_PURE // TODO IAR pure function attribute
# define ATTR_CONST // TODO IAR const function attribute
# define ATTR_WEAK __weak
# define ATTR_WARN_UNUSED_RESULT
# define ATTR_USED
# define ATTR_UNUSED
2013-09-22 18:54:44 +02:00
// built-in function to convert 32-bit Big-Endian to Little-Endian
2013-12-27 07:40:31 +01:00
//#if __LITTLE_ENDIAN__
2013-11-26 07:15:40 +01:00
# define __be2n __REV
# define __n2be __be2n
2013-09-22 18:54:44 +02:00
2014-03-04 09:19:50 +01:00
# define __n2be_16(u16) ((uint16_t) __REV16(u16))
# define __be2n_16(u16) __n2be_16(u16)
2012-12-04 12:18:29 +01:00
# ifdef __cplusplus
}
# endif
2012-11-29 09:40:57 +01:00
2012-12-04 12:18:29 +01:00
# endif /* _TUSB_COMPILER_IAR_H_ */
2012-11-29 09:40:57 +01:00
2012-12-04 12:18:29 +01:00
/** @} */