--- np2/i386c/ia32/ia32xc.mcr 2004/03/09 18:52:12 1.4 +++ np2/i386c/ia32/ia32xc.mcr 2005/03/12 12:34:30 1.8 @@ -1,4 +1,4 @@ -/* $Id: ia32xc.mcr,v 1.4 2004/03/09 18:52:12 yui Exp $ */ +/* $Id: ia32xc.mcr,v 1.8 2005/03/12 12:34:30 monaka Exp $ */ /* * Copyright (c) 2003 NONAKA Kimihiro @@ -12,8 +12,6 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * 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 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES @@ -30,7 +28,7 @@ #ifndef 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 @@ -247,7 +245,7 @@ do { \ UINT32 __s = (s); \ UINT32 __d = (d); \ UINT32 __r = __d; \ - DWORD __R; \ + UINT32 __R; \ UINT8 __f; \ UINT8 __o; \ \ @@ -1337,21 +1335,21 @@ do { \ : "=m" (__r), "=m" (__h), "=m" (__f), "=m" (__o) \ : "m" (__d), "m" (__s) \ : "eax", "edx"); \ - if (((DWORD)__R != __r) || \ - ((DWORD)(__R >> 32) != __h) || \ + if (((UINT32)__R != __r) || \ + ((UINT32)(__R >> 32) != __h) || \ (((__f ^ CPU_FLAGL) & C_FLAG) != 0) || \ (!CPU_OV != !__o)) { \ ia32_warning("XC_DWORD_IMUL: __s = %08x, __d = %08x",__s, __d);\ ia32_warning("XC_DWORD_IMUL: __Rl = %08x, __r = %08x", \ - (DWORD)__R, __r); \ + (UINT32)__R, __r); \ 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, " \ "mask = %02x", CPU_FLAGL, __f, C_FLAG); \ ia32_warning("XC_DWORD_IMUL: CPU_OV = %s, __o = %s", \ CPU_OV ? "OV" : "NV", __o ? "OV" : "NV"); \ - assert((DWORD)__R == __r); \ - assert((DWORD)(__R >> 32) == __h); \ + assert((UINT32)__R == __r); \ + assert((UINT32)(__R >> 32) == __h); \ assert(((__f ^ CPU_FLAGL) & C_FLAG) == 0); \ assert(!CPU_OV == !__o); \ } \ @@ -1599,21 +1597,21 @@ do { \ } \ } while (/*CONSTCOND*/ 0) -#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 BYTE_ADD(r, d, s) XC_ADD_BYTE(r, d, s) +#define WORD_ADD(r, d, s) XC_ADD_WORD(r, d, s) +#define DWORD_ADD(r, d, s) XC_ADD_DWORD(r, d, s) +#define BYTE_OR(d, s) XC_OR_BYTE(d, s) +#define WORD_OR(d, s) XC_OR_WORD(d, s) +#define DWORD_OR(d, s) XC_OR_DWORD(d, s) +#define BYTE_ADC(r, d, s) XC_ADC_BYTE(r, d, s) +#define WORD_ADC(r, d, s) XC_ADC_WORD(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 WORD_SBB(r, d, s) XC_WORD_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 AND_WORD(d, s) XC_AND_WORD(d, s) -#define AND_DWORD(d, s) XC_AND_DWORD(d, s) +#define BYTE_AND(d, s) XC_AND_BYTE(d, s) +#define WORD_AND(d, s) XC_AND_WORD(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 WORD_SUB(r, d, s) XC_WORD_SUB(r, d, s) #define DWORD_SUB(r, d, s) XC_DWORD_SUB(r, d, s) @@ -1636,6 +1634,19 @@ do { \ #define WORD_DEC(s) XC_WORD_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 #elif defined(IA32_CROSS_CHECK) && defined(_MSC_VER) @@ -1644,21 +1655,21 @@ do { \ #else /* !(IA32_CROSS_CHECK && __GNUC__ && (i386) || __i386__)) */ -#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 BYTE_ADD(r, d, s) _ADD_BYTE(r, d, s) +#define WORD_ADD(r, d, s) _ADD_WORD(r, d, s) +#define DWORD_ADD(r, d, s) _ADD_DWORD(r, d, s) +#define BYTE_OR(d, s) _OR_BYTE(d, s) +#define WORD_OR(d, s) _OR_WORD(d, s) +#define DWORD_OR(d, s) _OR_DWORD(d, s) +#define BYTE_ADC(r, d, s) _ADC_BYTE(r, d, s) +#define WORD_ADC(r, d, s) _ADC_WORD(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 WORD_SBB(r, d, s) _WORD_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 AND_WORD(d, s) _AND_WORD(d, s) -#define AND_DWORD(d, s) _AND_DWORD(d, s) +#define BYTE_AND(d, s) _AND_BYTE(d, s) +#define WORD_AND(d, s) _AND_WORD(d, s) +#define DWORD_AND(d, s) _AND_DWORD(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 DWORD_SUB(r, d, s) _DWORD_SUB(r, d, s) @@ -1681,8 +1692,21 @@ do { \ #define WORD_DEC(s) _WORD_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() -#endif /* IA32_CROSS_CHECK && __GNUC__ && (i386) || __i386__) */ +#endif /* IA32_CROSS_CHECK && GCC_CPU_ARCH_IA32 */ #endif /* IA32_CPU_IA32_MCR__ */