/**
 * @file compiler.h
 * @author Flagchip
 * @brief compiler define
 * @version 2.0.0
 * @date 2023-09-20
 *
 * SDK Version: 2.6.0
 *

 * @copyright Copyright (c) 2020-2024 Flagchip Semiconductors Co., Ltd.
 *
 */
#ifndef DEVICE_COMPILER_H_
#define DEVICE_COMPILER_H_


#ifndef __IO
#ifdef __cplusplus
  #define   __I     volatile             /*!< Defines 'read only' permissions                 */
#else
  #define   __I     volatile const       /*!< Defines 'read only' permissions                 */
#endif
#define     __O     volatile             /*!< Defines 'write only' permissions                */
#define     __IO    volatile             /*!< Defines 'read / write' permissions              */
#endif


#if defined (__GNUC__)
#define INLINE           __attribute__((always_inline)) inline
#define LOCAL_INLINE     __attribute__((always_inline)) static inline
#define ALIGN(n)         __attribute__((aligned(n)))
#define PCAKED           __attribute__((packed))

#else
#define INLINE           inline
#define LOCAL_INLINE     static inline

#if (defined(__ICCARM__))
#define STRINGIZE(x)     #x
#define ALIGN(n)         _Pragma(STRINGIZE(data_alignment=(n)))
#define PACKED           __packed
#endif

#if (defined(__CC_ARM))
#define ALIGN(n)         __align(n)
#define PACKED           __packed
#endif

#endif




#if (defined(__ICCARM__))

#define PROCESS_UNUSED_VAR(var)        (var) = (var);

#elif defined __GNUC__
#define PROCESS_UNUSED_VAR(var)        (void)(var);

#else

#define PROCESS_UNUSED_VAR(var)

#endif



#endif /* DEVICE_COMPILER_H_ */
