plugin: more aggressive name change to avoid conflicts
[ia32rtools.git] / c_auto.h
index 279f335..8ae2eee 100644 (file)
--- a/c_auto.h
+++ b/c_auto.h
@@ -18,34 +18,52 @@ typedef struct {
 } mmxr;
 
 #define bool int
-#define _BYTE BYTE
-#define _WORD WORD
-#define _DWORD DWORD
+#define _BYTE uint8_t
+#define _WORD uint16_t
+#define _DWORD uint32_t
 #define _UNKNOWN uint8_t
 #undef LOBYTE
 #undef LOWORD
 #undef HIBYTE
 #undef HIWORD
-#define LOBYTE(x)   (*((_BYTE*)&(x)))
-#define LOWORD(x)   (*((_WORD*)&(x)))
-#define HIBYTE(x)   (*((_BYTE*)&(x)+1))
-#define HIWORD(x)   (*((_WORD*)&(x)+1))
-#define BYTE0(x)    (*((_BYTE*)&(x)+0))
-#define BYTE1(x)    (*((_BYTE*)&(x)+1))
-#define BYTE2(x)    (*((_BYTE*)&(x)+2))
-#define BYTE3(x)    (*((_BYTE*)&(x)+3))
+#define LOBYTE(x)   (*((u8*)&(x)))
+#define LOWORD(x)   (*((u16*)&(x)))
+#define HIBYTE(x)   (*((u8*)&(x)+1))
+#define HIWORD(x)   (*((u16*)&(x)+1))
+#define BYTE0(x)    (*((u8*)&(x)+0))
+#define BYTE1(x)    (*((u8*)&(x)+1))
+#define BYTE2(x)    (*((u8*)&(x)+2))
+#define BYTE3(x)    (*((u8*)&(x)+3))
+
+#ifndef __WINE__
+#define DECL_IMPORT __declspec(dllimport)
+#else
+#define DECL_IMPORT
+#endif
 
 #define memcpy_0 memcpy
 
 #define noreturn __attribute__((noreturn))
 
-#ifdef __WINE__
-#define PCVOID LPCVOID
-#define __VALIST __ms_va_list
-#endif
-
 static inline BOOL PtInRect_sa(LPCRECT r, int x, int y)
 {
   POINT p = { x, y };
   return PtInRect(r, p);
 }
+
+static inline int do_parity(unsigned int v)
+{
+  v ^= v >> 4;
+  v ^= v >> 2;
+  v ^= v >> 1;
+  return (v ^ 1) & 1;
+}
+
+#define do_skip_code_abort() \
+  printf("%s:%d: skip_code_abort\n", __FILE__, __LINE__); \
+  *(volatile int *)0 = 1
+
+#define barrier() \
+  asm volatile("" ::: "memory")
+
+// vim:ts=2:sw=2:expandtab