1 /******************************************************************************
   2  *
   3  * Name: acmsvc.h - VC specific defines, etc.
   4  *
   5  *****************************************************************************/
   6 
   7 /*
   8  * Copyright (C) 2000 - 2014, Intel Corp.
   9  * All rights reserved.
  10  *
  11  * Redistribution and use in source and binary forms, with or without
  12  * modification, are permitted provided that the following conditions
  13  * are met:
  14  * 1. Redistributions of source code must retain the above copyright
  15  *    notice, this list of conditions, and the following disclaimer,
  16  *    without modification.
  17  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
  18  *    substantially similar to the "NO WARRANTY" disclaimer below
  19  *    ("Disclaimer") and any redistribution must be conditioned upon
  20  *    including a substantially similar Disclaimer requirement for further
  21  *    binary redistribution.
  22  * 3. Neither the names of the above-listed copyright holders nor the names
  23  *    of any contributors may be used to endorse or promote products derived
  24  *    from this software without specific prior written permission.
  25  *
  26  * Alternatively, this software may be distributed under the terms of the
  27  * GNU General Public License ("GPL") version 2 as published by the Free
  28  * Software Foundation.
  29  *
  30  * NO WARRANTY
  31  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  32  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  33  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
  34  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  35  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  36  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  37  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  38  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
  39  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
  40  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  41  * POSSIBILITY OF SUCH DAMAGES.
  42  */
  43 
  44 #ifndef __ACMSVC_H__
  45 #define __ACMSVC_H__
  46 
  47 
  48 /*
  49  * Map low I/O functions for MS. This allows us to disable MS language
  50  * extensions for maximum portability.
  51  */
  52 #define open            _open
  53 #define read            _read
  54 #define write           _write
  55 #define close           _close
  56 #define stat            _stat
  57 #define fstat           _fstat
  58 #define mkdir           _mkdir
  59 #define strlwr          _strlwr
  60 #define O_RDONLY        _O_RDONLY
  61 #define O_BINARY        _O_BINARY
  62 #define O_CREAT         _O_CREAT
  63 #define O_WRONLY        _O_WRONLY
  64 #define O_TRUNC         _O_TRUNC
  65 #define S_IREAD         _S_IREAD
  66 #define S_IWRITE        _S_IWRITE
  67 #define S_IFDIR         _S_IFDIR
  68 
  69 /* Eliminate warnings for "old" (non-secure) versions of clib functions */
  70 
  71 #ifndef _CRT_SECURE_NO_WARNINGS
  72 #define _CRT_SECURE_NO_WARNINGS
  73 #endif
  74 
  75 /* Eliminate warnings for POSIX clib function names (open, write, etc.) */
  76 
  77 #ifndef _CRT_NONSTDC_NO_DEPRECATE
  78 #define _CRT_NONSTDC_NO_DEPRECATE
  79 #endif
  80 
  81 #define COMPILER_DEPENDENT_INT64    __int64
  82 #define COMPILER_DEPENDENT_UINT64   unsigned __int64
  83 #define ACPI_INLINE                 __inline
  84 
  85 /*
  86  * Calling conventions:
  87  *
  88  * ACPI_SYSTEM_XFACE        - Interfaces to host OS (handlers, threads)
  89  * ACPI_EXTERNAL_XFACE      - External ACPI interfaces
  90  * ACPI_INTERNAL_XFACE      - Internal ACPI interfaces
  91  * ACPI_INTERNAL_VAR_XFACE  - Internal variable-parameter list interfaces
  92  */
  93 #define ACPI_SYSTEM_XFACE           __cdecl
  94 #define ACPI_EXTERNAL_XFACE
  95 #define ACPI_INTERNAL_XFACE
  96 #define ACPI_INTERNAL_VAR_XFACE     __cdecl
  97 
  98 #ifndef _LINT
  99 /*
 100  * Math helper functions
 101  */
 102 #define ACPI_DIV_64_BY_32(n_hi, n_lo, d32, q32, r32) \
 103 {                           \
 104     __asm mov    edx, n_hi  \
 105     __asm mov    eax, n_lo  \
 106     __asm div    d32        \
 107     __asm mov    q32, eax   \
 108     __asm mov    r32, edx   \
 109 }
 110 
 111 #define ACPI_SHIFT_RIGHT_64(n_hi, n_lo) \
 112 {                           \
 113     __asm shr    n_hi, 1    \
 114     __asm rcr    n_lo, 1    \
 115 }
 116 #else
 117 
 118 /* Fake versions to make lint happy */
 119 
 120 #define ACPI_DIV_64_BY_32(n_hi, n_lo, d32, q32, r32) \
 121 {                           \
 122     q32 = n_hi / d32;       \
 123     r32 = n_lo / d32;       \
 124 }
 125 
 126 #define ACPI_SHIFT_RIGHT_64(n_hi, n_lo) \
 127 {                           \
 128     n_hi >>= 1;    \
 129     n_lo >>= 1;    \
 130 }
 131 #endif
 132 
 133 /* warn C4100: unreferenced formal parameter */
 134 #pragma warning(disable:4100)
 135 
 136 /* warn C4127: conditional expression is constant */
 137 #pragma warning(disable:4127)
 138 
 139 /* warn C4706: assignment within conditional expression */
 140 #pragma warning(disable:4706)
 141 
 142 /* warn C4131: uses old-style declarator (iASL compiler only) */
 143 #pragma warning(disable:4131)
 144 
 145 #if _MSC_VER > 1200 /* Versions above VC++ 6 */
 146 #pragma warning( disable : 4295 ) /* needed for acpredef.h array */
 147 #endif
 148 
 149 
 150 /* Debug support. Must be last in this file, do not move. */
 151 
 152 #ifdef _DEBUG
 153 #include <crtdbg.h>
 154 
 155 /*
 156  * Debugging memory corruption issues with windows:
 157  * Add #include <crtdbg.h> to accommon.h if necessary.
 158  * Add _ASSERTE(_CrtCheckMemory()); where needed to test memory integrity.
 159  * This can quickly localize the memory corruption.
 160  */
 161 #define ACPI_DEBUG_INITIALIZE() \
 162     _CrtSetDbgFlag (_CRTDBG_CHECK_ALWAYS_DF | \
 163         _CRTDBG_ALLOC_MEM_DF | _CRTDBG_CHECK_CRT_DF | \
 164         _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG))
 165 #endif
 166 
 167 #endif /* __ACMSVC_H__ */