Diff for /np2/i386c/ia32/ia32xc.mcr between versions 1.2 and 1.9

version 1.2, 2004/02/20 16:09:04 version 1.9, 2011/01/15 17:17:23
Line 1 Line 1
 /*      $Id$    */  
   
 /*  /*
  * Copyright (c) 2003 NONAKA Kimihiro   * Copyright (c) 2003 NONAKA Kimihiro
  * All rights reserved.   * All rights reserved.
Line 12 Line 10
  * 2. Redistributions in binary form must reproduce the above copyright   * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the   *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.   *    documentation and/or other materials provided with the distribution.
  * 3. The name of the author may not be used to endorse or promote products  
  *    derived from this software without specific prior written permission.  
  *   *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR   * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES   * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
Line 30 Line 26
 #ifndef IA32_CPU_IA32XC_MCR__  #ifndef IA32_CPU_IA32XC_MCR__
 #define IA32_CPU_IA32XC_MCR__  #define IA32_CPU_IA32XC_MCR__
   
 #if defined(IA32_CROSS_CHECK) && defined(__GNUC__) && (defined(i386) || defined(__i386__))  #if defined(IA32_CROSS_CHECK) && defined(GCC_CPU_ARCH_IA32)
   
 #define IA32_CPU_ENABLE_XC  #define IA32_CPU_ENABLE_XC
   
Line 247  do { \ Line 243  do { \
         UINT32 __s = (s); \          UINT32 __s = (s); \
         UINT32 __d = (d); \          UINT32 __d = (d); \
         UINT32 __r = __d; \          UINT32 __r = __d; \
         DWORD __R; \          UINT32 __R; \
         UINT8 __f; \          UINT8 __f; \
         UINT8 __o; \          UINT8 __o; \
         \          \
Line 1337  do { \ Line 1333  do { \
                 : "=m" (__r), "=m" (__h), "=m" (__f), "=m" (__o) \                  : "=m" (__r), "=m" (__h), "=m" (__f), "=m" (__o) \
                 : "m" (__d), "m" (__s) \                  : "m" (__d), "m" (__s) \
                 : "eax", "edx"); \                  : "eax", "edx"); \
         if (((DWORD)__R != __r) || \          if (((UINT32)__R != __r) || \
             ((DWORD)(__R >> 32) != __h) || \              ((UINT32)(__R >> 32) != __h) || \
             (((__f ^ CPU_FLAGL) & C_FLAG) != 0) || \              (((__f ^ CPU_FLAGL) & C_FLAG) != 0) || \
             (!CPU_OV != !__o)) { \              (!CPU_OV != !__o)) { \
                 ia32_warning("XC_DWORD_IMUL: __s = %08x, __d = %08x",__s, __d);\                  ia32_warning("XC_DWORD_IMUL: __s = %08x, __d = %08x",__s, __d);\
                 ia32_warning("XC_DWORD_IMUL: __Rl = %08x, __r = %08x", \                  ia32_warning("XC_DWORD_IMUL: __Rl = %08x, __r = %08x", \
                     (DWORD)__R, __r); \                      (UINT32)__R, __r); \
                 ia32_warning("XC_DWORD_IMUL: __Rh == %08x, __h == %08x", \                  ia32_warning("XC_DWORD_IMUL: __Rh == %08x, __h == %08x", \
                     (DWORD)(__R >> 32), __h); \                      (UINT32)(__R >> 32), __h); \
                 ia32_warning("XC_DWORD_IMUL: CPU_FLAGL = %02x, __f = %02x, " \                  ia32_warning("XC_DWORD_IMUL: CPU_FLAGL = %02x, __f = %02x, " \
                     "mask = %02x", CPU_FLAGL, __f, C_FLAG); \                      "mask = %02x", CPU_FLAGL, __f, C_FLAG); \
                 ia32_warning("XC_DWORD_IMUL: CPU_OV = %s, __o = %s", \                  ia32_warning("XC_DWORD_IMUL: CPU_OV = %s, __o = %s", \
                     CPU_OV ? "OV" : "NV", __o ? "OV" : "NV"); \                      CPU_OV ? "OV" : "NV", __o ? "OV" : "NV"); \
                 assert((DWORD)__R == __r); \                  assert((UINT32)__R == __r); \
                 assert((DWORD)(__R >> 32) == __h); \                  assert((UINT32)(__R >> 32) == __h); \
                 assert(((__f ^ CPU_FLAGL) & C_FLAG) == 0); \                  assert(((__f ^ CPU_FLAGL) & C_FLAG) == 0); \
                 assert(!CPU_OV == !__o); \                  assert(!CPU_OV == !__o); \
         } \          } \
Line 1599  do { \ Line 1595  do { \
         } \          } \
 } while (/*CONSTCOND*/ 0)  } while (/*CONSTCOND*/ 0)
   
 #define ADD_BYTE(r, d, s)       XC_ADD_BYTE(r, d, s)  #define BYTE_ADD(r, d, s)       XC_ADD_BYTE(r, d, s)
 #define ADD_WORD(r, d, s)       XC_ADD_WORD(r, d, s)  #define WORD_ADD(r, d, s)       XC_ADD_WORD(r, d, s)
 #define ADD_DWORD(r, d, s)      XC_ADD_DWORD(r, d, s)  #define DWORD_ADD(r, d, s)      XC_ADD_DWORD(r, d, s)
 #define OR_BYTE(d, s)           XC_OR_BYTE(d, s)  #define BYTE_OR(d, s)           XC_OR_BYTE(d, s)
 #define OR_WORD(d, s)           XC_OR_WORD(d, s)  #define WORD_OR(d, s)           XC_OR_WORD(d, s)
 #define OR_DWORD(d, s)          XC_OR_DWORD(d, s)  #define DWORD_OR(d, s)          XC_OR_DWORD(d, s)
 #define ADC_BYTE(r, d, s)       XC_ADC_BYTE(r, d, s)  #define BYTE_ADC(r, d, s)       XC_ADC_BYTE(r, d, s)
 #define ADC_WORD(r, d, s)       XC_ADC_WORD(r, d, s)  #define WORD_ADC(r, d, s)       XC_ADC_WORD(r, d, s)
 #define ADC_DWORD(r, d, s)      XC_ADC_DWORD(r, d, s)  #define DWORD_ADC(r, d, s)      XC_ADC_DWORD(r, d, s)
 #define BYTE_SBB(r, d, s)       XC_BYTE_SBB(r, d, s)  #define BYTE_SBB(r, d, s)       XC_BYTE_SBB(r, d, s)
 #define WORD_SBB(r, d, s)       XC_WORD_SBB(r, d, s)  #define WORD_SBB(r, d, s)       XC_WORD_SBB(r, d, s)
 #define DWORD_SBB(r, d, s)      XC_DWORD_SBB(r, d, s)  #define DWORD_SBB(r, d, s)      XC_DWORD_SBB(r, d, s)
 #define AND_BYTE(d, s)          XC_AND_BYTE(d, s)  #define BYTE_AND(d, s)          XC_AND_BYTE(d, s)
 #define AND_WORD(d, s)          XC_AND_WORD(d, s)  #define WORD_AND(d, s)          XC_AND_WORD(d, s)
 #define AND_DWORD(d, s)         XC_AND_DWORD(d, s)  #define DWORD_AND(d, s)         XC_AND_DWORD(d, s)
 #define BYTE_SUB(r, d, s)       XC_BYTE_SUB(r, d, s)  #define BYTE_SUB(r, d, s)       XC_BYTE_SUB(r, d, s)
 #define WORD_SUB(r, d, s)       XC_WORD_SUB(r, d, s)  #define WORD_SUB(r, d, s)       XC_WORD_SUB(r, d, s)
 #define DWORD_SUB(r, d, s)      XC_DWORD_SUB(r, d, s)  #define DWORD_SUB(r, d, s)      XC_DWORD_SUB(r, d, s)
Line 1636  do { \ Line 1632  do { \
 #define WORD_DEC(s)             XC_WORD_DEC(s)  #define WORD_DEC(s)             XC_WORD_DEC(s)
 #define DWORD_DEC(s)            XC_DWORD_DEC(s)  #define DWORD_DEC(s)            XC_DWORD_DEC(s)
   
   #define ADD_BYTE(r, d, s)       XC_ADD_BYTE(r, d, s)
   #define ADD_WORD(r, d, s)       XC_ADD_WORD(r, d, s)
   #define ADD_DWORD(r, d, s)      XC_ADD_DWORD(r, d, s)
   #define OR_BYTE(d, s)           XC_OR_BYTE(d, s)
   #define OR_WORD(d, s)           XC_OR_WORD(d, s)
   #define OR_DWORD(d, s)          XC_OR_DWORD(d, s)
   #define ADC_BYTE(r, d, s)       XC_ADC_BYTE(r, d, s)
   #define ADC_WORD(r, d, s)       XC_ADC_WORD(r, d, s)
   #define ADC_DWORD(r, d, s)      XC_ADC_DWORD(r, d, s)
   #define AND_BYTE(d, s)          XC_AND_BYTE(d, s)
   #define AND_WORD(d, s)          XC_AND_WORD(d, s)
   #define AND_DWORD(d, s)         XC_AND_DWORD(d, s)
   
 #define XC_STORE_FLAGL()        UINT8 __xc_flagl = CPU_FLAGL  #define XC_STORE_FLAGL()        UINT8 __xc_flagl = CPU_FLAGL
   
   #elif defined(IA32_CROSS_CHECK) && defined(_MSC_VER)
   
   #include        "ia32xc_msc.mcr"
   
 #else   /* !(IA32_CROSS_CHECK && __GNUC__ && (i386) || __i386__)) */  #else   /* !(IA32_CROSS_CHECK && __GNUC__ && (i386) || __i386__)) */
   
 #define ADD_BYTE(r, d, s)       _ADD_BYTE(r, d, s)  #define BYTE_ADD(r, d, s)       _ADD_BYTE(r, d, s)
 #define ADD_WORD(r, d, s)       _ADD_WORD(r, d, s)  #define WORD_ADD(r, d, s)       _ADD_WORD(r, d, s)
 #define ADD_DWORD(r, d, s)      _ADD_DWORD(r, d, s)  #define DWORD_ADD(r, d, s)      _ADD_DWORD(r, d, s)
 #define OR_BYTE(d, s)           _OR_BYTE(d, s)  #define BYTE_OR(d, s)           _OR_BYTE(d, s)
 #define OR_WORD(d, s)           _OR_WORD(d, s)  #define WORD_OR(d, s)           _OR_WORD(d, s)
 #define OR_DWORD(d, s)          _OR_DWORD(d, s)  #define DWORD_OR(d, s)          _OR_DWORD(d, s)
 #define ADC_BYTE(r, d, s)       _ADC_BYTE(r, d, s)  #define BYTE_ADC(r, d, s)       _ADC_BYTE(r, d, s)
 #define ADC_WORD(r, d, s)       _ADC_WORD(r, d, s)  #define WORD_ADC(r, d, s)       _ADC_WORD(r, d, s)
 #define ADC_DWORD(r, d, s)      _ADC_DWORD(r, d, s)  #define DWORD_ADC(r, d, s)      _ADC_DWORD(r, d, s)
 #define BYTE_SBB(r, d, s)       _BYTE_SBB(r, d, s)  #define BYTE_SBB(r, d, s)       _BYTE_SBB(r, d, s)
 #define WORD_SBB(r, d, s)       _WORD_SBB(r, d, s)  #define WORD_SBB(r, d, s)       _WORD_SBB(r, d, s)
 #define DWORD_SBB(r, d, s)      _DWORD_SBB(r, d, s)  #define DWORD_SBB(r, d, s)      _DWORD_SBB(r, d, s)
 #define AND_BYTE(d, s)          _AND_BYTE(d, s)  #define BYTE_AND(d, s)          _AND_BYTE(d, s)
 #define AND_WORD(d, s)          _AND_WORD(d, s)  #define WORD_AND(d, s)          _AND_WORD(d, s)
 #define ANDDWORD(d, s)          _AND_DWORD(d, s)  #define DWORD_AND(d, s)         _AND_DWORD(d, s)
 #define BYT_E_SUB(r, d, s)      _BYTE_SUB(r, d, s)  #define BYTE_SUB(r, d, s)       _BYTE_SUB(r, d, s)
 #define WORD_SUB(r, d, s)       _WORD_SUB(r, d, s)  #define WORD_SUB(r, d, s)       _WORD_SUB(r, d, s)
 #define DWORD_SUB(r, d, s)      _DWORD_SUB(r, d, s)  #define DWORD_SUB(r, d, s)      _DWORD_SUB(r, d, s)
 #define BYTE_XOR(d, s)          _BYTE_XOR(d, s)  #define BYTE_XOR(d, s)          _BYTE_XOR(d, s)
Line 1677  do { \ Line 1690  do { \
 #define WORD_DEC(s)             _WORD_DEC(s)  #define WORD_DEC(s)             _WORD_DEC(s)
 #define DWORD_DEC(s)            _DWORD_DEC(s)  #define DWORD_DEC(s)            _DWORD_DEC(s)
   
   #define ADD_BYTE(r, d, s)       _ADD_BYTE(r, d, s)
   #define ADD_WORD(r, d, s)       _ADD_WORD(r, d, s)
   #define ADD_DWORD(r, d, s)      _ADD_DWORD(r, d, s)
   #define OR_BYTE(d, s)           _OR_BYTE(d, s)
   #define OR_WORD(d, s)           _OR_WORD(d, s)
   #define OR_DWORD(d, s)          _OR_DWORD(d, s)
   #define ADC_BYTE(r, d, s)       _ADC_BYTE(r, d, s)
   #define ADC_WORD(r, d, s)       _ADC_WORD(r, d, s)
   #define ADC_DWORD(r, d, s)      _ADC_DWORD(r, d, s)
   #define AND_BYTE(d, s)          _AND_BYTE(d, s)
   #define AND_WORD(d, s)          _AND_WORD(d, s)
   #define AND_DWORD(d, s)         _AND_DWORD(d, s)
   
 #define XC_STORE_FLAGL()  #define XC_STORE_FLAGL()
   
 #endif  /* IA32_CROSS_CHECK && __GNUC__ && (i386) || __i386__) */  #endif  /* IA32_CROSS_CHECK && GCC_CPU_ARCH_IA32 */
   
 #endif  /* IA32_CPU_IA32_MCR__ */  #endif  /* IA32_CPU_IA32_MCR__ */

Removed from v.1.2  
changed lines
  Added in v.1.9


RetroPC.NET-CVS <cvs@retropc.net>