Rework READ64_SEG macro to prevent spurious warning on gcc 4.4.
authorKevin O'Connor <kevin@koconnor.net>
Wed, 1 Jul 2009 01:45:56 +0000 (21:45 -0400)
committerKevin O'Connor <kevin@koconnor.net>
Wed, 1 Jul 2009 01:45:56 +0000 (21:45 -0400)
Gcc is reporting a spurious unused variable warning - work around it.

src/farptr.h

index 4fc727bfeae0642c07d2f184439bb8007b414cc5..360b28ee7dd30d0b41fb5c90f938ed6d87ebf011 100644 (file)
@@ -23,11 +23,12 @@ extern u16 __segment_FS, __segment_GS;
 #define READ32_SEG(SEG, value, var)                     \
     __asm__("movl %%" #SEG ":%1, %0" : "=ri"(value)     \
             : "m"(var), "m"(__segment_ ## SEG))
-#define READ64_SEG(SEG, value, var) do {                                \
-        union u64_u32_u *__w64_ptr = (union u64_u32_u *)&(value);       \
-        union u64_u32_u *__r64_ptr = (union u64_u32_u *)&(var);         \
-        READ32_SEG(SEG, __w64_ptr->hi, __r64_ptr->hi);                  \
-        READ32_SEG(SEG, __w64_ptr->lo, __r64_ptr->lo);                  \
+#define READ64_SEG(SEG, value, var) do {                        \
+        union u64_u32_u __value;                                \
+        union u64_u32_u *__r64_ptr = (union u64_u32_u *)&(var); \
+        READ32_SEG(SEG, __value.hi, __r64_ptr->hi);             \
+        READ32_SEG(SEG, __value.lo, __r64_ptr->lo);             \
+        (value) = __value.val;                                  \
     } while (0)
 #define WRITE8_SEG(SEG, var, value)                             \
     __asm__("movb %b1, %%" #SEG ":%0" : "=m"(var)               \