2013-05-06 12:50:19 +07:00
/**************************************************************************/
/*!
@ file compiler_iar . h
@ author hathach ( tinyusb . org )
2012-11-26 17:19:26 +07:00
2013-05-06 12:50:19 +07: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 17:19:26 +07:00
2012-11-29 10:41:33 +07:00
/** \file
2012-12-04 18:18:29 +07:00
* \ brief IAR Compiler
2012-11-29 10:41:33 +07:00
*/
2012-12-04 18:18:29 +07:00
/** \ingroup Group_Compiler
* \ defgroup Group_IAR IAR ARM
2012-11-29 10:41:33 +07:00
* @ {
*/
2012-12-04 18:18:29 +07:00
# ifndef _TUSB_COMPILER_IAR_H_
# define _TUSB_COMPILER_IAR_H_
2012-11-27 15:21:47 +07:00
2012-12-04 18:18:29 +07:00
# ifdef __cplusplus
extern " C " {
# endif
2012-11-29 16:32:49 +07:00
2013-09-19 16:11:11 +07:00
# define ALIGN_OF(x) __ALIGNOF__(x)
2013-03-04 15:01:33 +07:00
2013-09-19 16:11:11 +07:00
# define ATTR_PACKED_STRUCT(x) __packed x
2012-12-04 18:18:29 +07:00
# define ATTR_PREPACKED __packed
# define ATTR_PACKED
2012-11-26 17:19:26 +07:00
2013-09-19 16:11:11 +07: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 15:19:50 +07:00
# define ATTR_ALIGNED_16 _Pragma("data_alignment=16")
2013-09-19 16:11:11 +07: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 23:54:44 +07:00
// built-in function to convert 32-bit Big-Endian to Little-Endian
2013-12-27 13:40:31 +07:00
//#if __LITTLE_ENDIAN__
2013-11-26 13:15:40 +07:00
# define __be2n __REV
# define __n2be __be2n
2013-09-22 23:54:44 +07:00
2014-03-04 15:19:50 +07:00
# define __n2be_16(u16) ((uint16_t) __REV16(u16))
# define __be2n_16(u16) __n2be_16(u16)
2012-12-04 18:18:29 +07:00
# ifdef __cplusplus
}
# endif
2012-11-29 15:40:57 +07:00
2012-12-04 18:18:29 +07:00
# endif /* _TUSB_COMPILER_IAR_H_ */
2012-11-29 15:40:57 +07:00
2012-12-04 18:18:29 +07:00
/** @} */