[Vm-dev] [commit][2921] Fix bug on windows ioShowDisplay for bitdepth 16/8/4 ( big endian)

commits at squeakvm.org commits at squeakvm.org
Sun May 11 16:05:52 UTC 2014


Revision: 2921
Author:   lewis
Date:     2014-05-11 09:05:51 -0700 (Sun, 11 May 2014)
Log Message:
-----------
Fix bug on windows ioShowDisplay for bitdepth 16/8/4 (big endian)

Fix by Nicolai Hess.
Added to oscog branch by Eliot Miranda.
Merge update from oscog to trunk.

Fix and discussion on vm-dev:
http://lists.squeakfoundation.org/pipermail/vm-dev/2014-May/015331.html

Updated in oscog branch in SVN commit 2919:
http://lists.squeakfoundation.org/pipermail/vm-dev/2014-May/015334.html

Modified Paths:
--------------
    trunk/platforms/win32/vm/sqWin32Window.c

Modified: trunk/platforms/win32/vm/sqWin32Window.c
===================================================================
--- trunk/platforms/win32/vm/sqWin32Window.c	2014-05-10 15:56:23 UTC (rev 2920)
+++ trunk/platforms/win32/vm/sqWin32Window.c	2014-05-11 16:05:51 UTC (rev 2921)
@@ -1710,14 +1710,14 @@
 # define BYTE_SWAP(w) w
 # define WORD_SWAP(w) w
 #else /* LSB_FIRST */
-# if defined(__GNUC__) && defined(_X86_)
+# if defined(__GNUC__) && (defined(_X86_) || defined(i386) || defined(__i386) || defined(__i386__))
    /* GCC generates *optimal* code with a little help */
-#  define BYTE_SWAP(w) __asm__("bswap %%eax" : "=eax" (w) : "eax" (w))
-#  define WORD_SWAP(w) __asm__("roll $16, %%eax" : "=eax" (w) : "eax" (w))
+#  define BYTE_SWAP(w) __asm__("bswap %0" : "+r" (w))
+#  define WORD_SWAP(w) __asm__("roll $16, %0" : "+r" (w))
 #  define SRC_PIX_REG asm("%esi")
 #  define DST_PIX_REG asm("%edi")
-# else /* Not GCC?! Well, it's your own fault */
-#  define BYTE_SWAP(w) w = (w << 24) | ((w & 0xFF00) << 8) | ((w >> 8) & 0xFF00) | (w >> 24)
+# else /* Not GCC?! Well, it's your own fault ;-) */
+#  define BYTE_SWAP(w) w = (w<<24) | ((w&0xFF00)<<8) | ((w>>8)&0xFF00) | (w>>24)
 #  define WORD_SWAP(w) w = (( (unsigned)(w) << 16) | ((unsigned) (w) >> 16))
 # endif /* __GNUC__ */
 #endif /* MSB_FIRST */



More information about the Vm-dev mailing list