#include <cstddef>
#include <cstdint>
#include <climits>

#if !defined(CHAR_BIT)
#define CHAR_BIT 8
#endif

#if defined( __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 */

/* following defines should be used for structure members */
#define __IM  volatile const /*! Defines 'read only' structure member permissions */
#define __OM  volatile       /*! Defines 'write only' structure member permissions */
#define __IOM volatile       /*! Defines 'read / write' structure member permissions */
