#ifndef _VM_BASIC_TYPES_H_
#define _VM_BASIC_TYPES_H_
#define INCLUDE_ALLOW_USERLEVEL
#define INCLUDE_ALLOW_MONITOR
#define INCLUDE_ALLOW_MODULE
#define INCLUDE_ALLOW_VMKERNEL
#include "includeCheck.h"
#if 0
typedef char Bool;
#endif
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif
#ifdef _MSC_VER
typedef unsigned __int64 uint64;
typedef signed __int64 int64;
#pragma warning (disable :4018) // signed/unsigned mismatch
#pragma warning (disable :4761) // integral size mismatch in argument; conversion supplied
#pragma warning (disable :4305) // truncation from 'const int' to 'short'
#pragma warning (disable :4244) // conversion from 'unsigned short' to 'unsigned char'
#pragma warning (disable :4133) // incompatible types - from 'struct VM *' to 'int *'
#pragma warning (disable :4047) // differs in levels of indirection
#pragma warning (disable :4146) // unary minus operator applied to unsigned type, result still unsigned
#pragma warning (disable :4142) // benign redefinition of type
#elif defined(__GNUC__)
#ifndef __STRICT_ANSI__
typedef unsigned long long uint64;
typedef long long int64;
#endif
#else
#if 0
#error - Need compiler define for int64/uint64
#endif
#endif
typedef unsigned int uint32;
typedef unsigned short uint16;
typedef unsigned char uint8;
typedef int int32;
typedef short int16;
typedef char int8;
#ifdef _MSC_VER
#define FMT64 "I64"
#elif defined(__GNUC__)
#define FMT64 "L"
#else
#if 0
#error - Need compiler define for FMT64
#endif
#endif
typedef uint32 VA;
typedef uint32 VPN;
typedef uint32 PA;
typedef uint32 PPN;
typedef uint32 MA;
typedef uint32 MPN;
#define INVALID_MPN ((MPN)-1)
#define EXTERN extern
#ifdef __GNUC__
#define CONST const
#else
#ifndef CONST
#define CONST
#endif
#endif
#ifdef _MSC_VER
#ifndef INLINE
#define INLINE __inline
#endif
#else
#ifndef INLINE
#define INLINE inline
#endif
#endif
#if defined(WIN32) && !defined(VMX86_NO_THREADS)
#define THREADSPECIFIC _declspec(thread)
#else
#define THREADSPECIFIC
#endif
#define INLINE_SINGLE_CALLER INLINE
#ifdef _MSC_VER
#define NORETURN_DECL(_fndecl) __declspec(noreturn) _fndecl
#elif defined(__GNUC__) && __GNUC__ >= 2 && __GNUC_MINOR__ >= 5
#define NORETURN_DECL(_fndecl) _fndecl __attribute__((__noreturn__))
#else
#define NORETURN_DECL(_fndecl) _fndecl
#endif
#if defined(__GNUC__) && defined(notdef)
# define PRINTF_DECL(fmtPos, varPos) __attribute__((__format__(__printf__, fmtPos, varPos)))
#else
# define PRINTF_DECL(fmtPos, varPos)
#endif
#define INFINITE_LOOP() do { } while (1)
#endif