/******************************************************************************
 *
 *  Copyright (C) 2014 The Android Open Source Project
 *  Copyright 2002 - 2004 Open Interface North America, Inc. All rights
 *                        reserved.
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at:
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 *
 ******************************************************************************/
#ifndef _OI_CPU_DEP_H
#define _OI_CPU_DEP_H

#include <stdint.h>

/**
 * @file
 * This file contains definitions for characteristics of the target CPU and
 * compiler, including primitive data types and endianness.
 *
 * This file defines the byte order and primitive data types for various
 * CPU families. The preprocessor symbol 'CPU' must be defined to be an
 * appropriate value or this header will generate a compile-time error.
 *
 * @note The documentation for this header file uses the x86 family of
 * processors as an illustrative example for CPU/compiler-dependent data type
 * definitions. Go to the source code of this header file to see the details of
 * primitive type definitions for each platform.
 *
 * Additional information is available in the @ref data_types_docpage section.
 */

/*******************************************************************************
  $Revision: #1 $
 ******************************************************************************/

#ifdef __cplusplus
extern "C" {
#endif

/** \addtogroup Misc Miscellaneous APIs */
/**@{*/

/** @name Definitions indicating family of target OI_CPU_TYPE
 *  @{
 */

#define OI_CPU_X86 1 /**< x86 processor family */
#define OI_CPU_ARM                            \
  2 /**< ARM processor family.                \
         @deprecated Use #OI_CPU_ARM7_LEND or \
         #OI_CPU_ARM7_BEND. */
#define OI_CPU_ARC                                               \
  3                     /**< ARC processor family.               \
                             @deprecated Use #OI_CPU_ARC_LEND or \
                             #OI_CPU_ARC_BEND. */
#define OI_CPU_SH3 4    /**< Hitachi SH-3 processor family */
#define OI_CPU_H8 5     /**< Hitachi H8 processor family */
#define OI_CPU_MIPS 6   /**< MIPS processor family */
#define OI_CPU_SPARC 7  /**< SPARC processor family */
#define OI_CPU_M68000 8 /**< Motorola M68000 processor family */
#define OI_CPU_PPC 9    /**< PowerPC (PPC) processor family */
#define OI_CPU_SH4_7750 \
  10                  /**< Hitachi SH7750 series in SH-4 processor family */
#define OI_CPU_SH2 11 /**< Hitachi SH-2 processor family */
#define OI_CPU_ARM7_LEND 12 /**< ARM7, little-endian */
#define OI_CPU_ARM7_BEND 13 /**< ARM7, big-endian */
#define OI_CPU_GDM1202 14   /**< GCT GDM1202 */
#define OI_CPU_ARC_LEND 15  /**< ARC processor family, little-endian */
#define OI_CPU_ARC_BEND 16  /**< ARC processor family, big-endian */
#define OI_CPU_M30833F 17   /**< Mitsubishi M308 processor family */
#define OI_CPU_CR16C 18  /**< National Semiconductor 16 bit processor family */
#define OI_CPU_M64111 19 /**< Renesas M64111 processor (M32R family) */
#define OI_CPU_ARMV5_LEND 20  //*< ARM5, little-endian */

#define OI_CPU_TYPE 12

#ifndef OI_CPU_TYPE
#error "OI_CPU_TYPE type not defined"
#endif

/**@}*/

/** @name Definitions indicating byte-wise endianness of target CPU
 *  @{
 */

#define OI_BIG_ENDIAN_BYTE_ORDER                                           \
  0 /**< Multiple-byte values are stored in memory beginning with the most \
       significant byte at the lowest address.  */
#define OI_LITTLE_ENDIAN_BYTE_ORDER                                         \
  1 /**< Multiple-byte values are stored in memory beginning with the least \
       significant byte at the lowest address. */

/**@}*/

/** @name  CPU/compiler-independent primitive data type definitions
 *  @{
 */

typedef int
    OI_BOOL; /**< Boolean values use native integer data type for target CPU. */
typedef int
    OI_INT; /**< Integer values use native integer data type for target CPU. */
typedef unsigned int OI_UINT;  /**< Unsigned integer values use native unsigned
                                  integer data type for target CPU. */
typedef unsigned char OI_BYTE; /**< Raw bytes type uses native character data
                                  type for target CPU. */
typedef uint32_t OI_ELEMENT_UNION; /**< Type for first element of a union to
                                      support all data types up to pointer
                                      width. */

/**@}*/

/******************************************************************************/

#if OI_CPU_TYPE == OI_CPU_X86

#define OI_CPU_BYTE_ORDER                                                      \
  OI_LITTLE_ENDIAN_BYTE_ORDER /**< x86 platform byte ordering is little-endian \
                                 */

#endif

/******************************************************************************/

#if OI_CPU_TYPE == OI_CPU_ARM
/* This CPU type is deprecated (removed from use). Instead, use OI_CPU_ARM7_LEND
 * or OI_CPU_ARM7_BEND for little-endian or big-endian configurations of the
 * ARM7, respectively. */
#error OI_CPU_ARM is deprecated
#endif

/******************************************************************************/

#if OI_CPU_TYPE == OI_CPU_ARC
/* This CPU type is deprecated (removed from use). Instead, use OI_CPU_ARC_LEND
 * or OI_CPU_ARC_BEND for little-endian or big-endian configurations of the
 * ARC, respectively. */
#error OI_CPU_ARC is deprecated
#endif

/******************************************************************************/

#if OI_CPU_TYPE == OI_CPU_SH3
/* The Hitachi SH C compiler defines _LIT or _BIG, depending on the endianness
    specified to the compiler on the command line. */
#if defined(_LIT)
#define OI_CPU_BYTE_ORDER                                                 \
  OI_LITTLE_ENDIAN_BYTE_ORDER /**< If _LIT is defined, SH-3 platform byte \
                                 ordering is little-endian. */
#elif defined(_BIG)
#define OI_CPU_BYTE_ORDER                                              \
  OI_BIG_ENDIAN_BYTE_ORDER /**< If _BIG is defined, SH-3 platform byte \
                              ordering is big-endian. */
#else
#error SH compiler endianness undefined
#endif

#endif
/******************************************************************************/

#if OI_CPU_TYPE == OI_CPU_SH2

#define OI_CPU_BYTE_ORDER \
  OI_BIG_ENDIAN_BYTE_ORDER /**< SH-2 platform byte ordering is big-endian. */

#endif
/******************************************************************************/

#if OI_CPU_TYPE == OI_CPU_H8
#define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER
#error basic types not defined
#endif

/******************************************************************************/

#if OI_CPU_TYPE == OI_CPU_MIPS
#define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER
#endif

/******************************************************************************/

#if OI_CPU_TYPE == OI_CPU_SPARC
#define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER
#error basic types not defined
#endif

/******************************************************************************/

#if OI_CPU_TYPE == OI_CPU_M68000
#define OI_CPU_BYTE_ORDER                                                    \
  OI_BIG_ENDIAN_BYTE_ORDER /**< M68000 platform byte ordering is big-endian. \
                              */
#endif

/******************************************************************************/

#if OI_CPU_TYPE == OI_CPU_PPC
#define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER
#endif

/******************************************************************************/

#if OI_CPU_TYPE == OI_CPU_SH4_7750
#define OI_CPU_BYTE_ORDER                                                    \
  OI_BIG_ENDIAN_BYTE_ORDER /**< SH7750 platform byte ordering is big-endian. \
                              */
#endif

/******************************************************************************/

#if OI_CPU_TYPE == OI_CPU_ARM7_LEND
#define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER
#endif

/******************************************************************************/

#if OI_CPU_TYPE == OI_CPU_ARM7_BEND
#define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER
#endif

/******************************************************************************/

#if OI_CPU_TYPE == OI_CPU_GDM1202
#define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER
#endif

/******************************************************************************/

#if OI_CPU_TYPE == OI_CPU_ARC_LEND

#define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER
#endif

/******************************************************************************/

#if OI_CPU_TYPE == OI_CPU_ARC_BEND
#define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER
#endif

/******************************************************************************/

#if OI_CPU_TYPE == OI_CPU_M30833F
#define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER
#endif

/******************************************************************************/

#if OI_CPU_TYPE == OI_CPU_CR16C
#define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER
#endif

/******************************************************************************/

#if OI_CPU_TYPE == OI_CPU_M64111
#define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER
#endif

/******************************************************************************/

#if OI_CPU_TYPE == OI_CPU_ARMV5_LEND
#define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER
#endif

/******************************************************************************/

#ifndef OI_CPU_BYTE_ORDER
#error "Byte order (endian-ness) not defined"
#endif

/**@}*/

#ifdef __cplusplus
}
#endif

/******************************************************************************/
#endif /* _OI_CPU_DEP_H */
