#ifndef __INCmvOsBsdh
#define __INCmvOsBsdh
#ifdef DEBUG
#define MV_DEBUG_LOG
#endif
#define ENABLE_READ_AHEAD
#define ENABLE_WRITE_CACHE
#define HPTLIBAPI
#define FAR
#define SS_SEG
#ifdef FASTCALL
#undef FASTCALL
#endif
#define FASTCALL HPTLIBAPI
#define PASCAL HPTLIBAPI
typedef unsigned short USHORT;
typedef unsigned char UCHAR;
typedef unsigned char *PUCHAR;
typedef unsigned short *PUSHORT;
typedef unsigned char BOOLEAN;
typedef unsigned short WORD;
typedef unsigned int UINT, BOOL;
typedef unsigned char BYTE;
typedef void *PVOID, *LPVOID;
typedef void *ADDRESS;
typedef int LONG;
typedef unsigned int ULONG, *PULONG;
typedef unsigned int DWORD, *LPDWORD, *PDWORD;
typedef unsigned long ULONG_PTR, UINT_PTR, BUS_ADDR;
typedef unsigned long long HPT_U64, LBA_T;
typedef enum mvBoolean{MV_FALSE, MV_TRUE} MV_BOOLEAN;
#define FALSE 0
#define TRUE 1
#ifndef NULL
#define NULL 0
#endif
typedef void MV_VOID;
typedef unsigned int MV_U32;
typedef unsigned short MV_U16;
typedef unsigned char MV_U8;
typedef void *MV_VOID_PTR;
typedef MV_U32 *MV_U32_PTR;
typedef MV_U16 *MV_U16_PTR;
typedef MV_U8 *MV_U8_PTR;
typedef char *MV_CHAR_PTR;
typedef void *MV_BUS_ADDR_T;
#define MV_CPU_WRITE_BUFFER_FLUSH()
#define MV_CPU_TO_LE16(x) (x)
#define MV_CPU_TO_LE32(x) (x)
#define MV_LE16_TO_CPU(x) (x)
#define MV_LE32_TO_CPU(x) (x)
extern void HPTLIBAPI MV_REG_WRITE_BYTE(MV_BUS_ADDR_T base, MV_U32 offset, MV_U8 val);
extern void HPTLIBAPI MV_REG_WRITE_WORD(MV_BUS_ADDR_T base, MV_U32 offset, MV_U16 val);
extern void HPTLIBAPI MV_REG_WRITE_DWORD(MV_BUS_ADDR_T base, MV_U32 offset, MV_U32 val);
extern MV_U8 HPTLIBAPI MV_REG_READ_BYTE(MV_BUS_ADDR_T base, MV_U32 offset);
extern MV_U16 HPTLIBAPI MV_REG_READ_WORD(MV_BUS_ADDR_T base, MV_U32 offset);
extern MV_U32 HPTLIBAPI MV_REG_READ_DWORD(MV_BUS_ADDR_T base, MV_U32 offset);
typedef struct mvOsSemaphore
{
int notused;
} MV_OS_SEMAPHORE;
ULONG_PTR HPTLIBAPI fOsPhysicalAddress(void *addr);
#define mvOsSemInit(p) (MV_TRUE)
#define mvOsSemTake(p) (MV_TRUE)
#define mvOsSemRelease(p) (MV_TRUE)
void HPTLIBAPI mvMicroSecondsDelay(MV_U32);
#ifdef MV_DEBUG_LOG
int mvLogMsg(MV_U8, MV_CHAR_PTR, ...);
#define _mvLogMsg(x) mvLogMsg x
#else
#define mvLogMsg(x...)
#define _mvLogMsg(x)
#endif
#ifdef DEBUG
#define HPT_ASSERT(x) do { if (!(x)) { \
kprintf("ASSERT fail at %s line %d", __FILE__, __LINE__); \
while (1); \
}} while (0)
extern int hpt_dbg_level;
#define KdPrintI(_x_) do{ if (hpt_dbg_level>2) kprintf _x_; }while(0)
#define KdPrintW(_x_) do{ if (hpt_dbg_level>1) kprintf _x_; }while(0)
#define KdPrintE(_x_) do{ if (hpt_dbg_level>0) kprintf _x_; }while(0)
#define KdPrint(x) KdPrintI(x)
#else
#define HPT_ASSERT(x) do { } while (0)
#define KdPrint(x) do { } while (0)
#define KdPrintI(x) do { } while (0)
#define KdPrintW(x) do { } while (0)
#define KdPrintE(x) do { } while (0)
#endif
#endif