PowerPC volatile interlocked

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi!

When gcc has its optimisation turned on, we should to specify __volatile__ for inline-ed assembler code. Without this patch you can't open an SaveDialog box on darwin/ppc, and probably can't do a lot of other things which needs InterlockedIncrement().

ChangeLog:
- Make the PowerPC interlocked assembler code volatile.

Index: include/winbase.h
===================================================================
RCS file: /home/wine/wine/include/winbase.h,v
retrieving revision 1.186
diff -u -r1.186 winbase.h
--- include/winbase.h	21 Jul 2003 20:05:11 -0000	1.186
+++ include/winbase.h	22 Jul 2003 19:33:28 -0000
@@ -1998,7 +1998,7 @@
 {
     LONG ret = 0;
     LONG scratch;
-    __asm__ (
+    __asm__ __volatile__(
         "0:    lwarx %0,0,%2\n"
         "      xor. %1,%4,%0\n"
         "      bne 1f\n"
@@ -2016,7 +2016,7 @@
 extern inline LONG WINAPI InterlockedExchange( PLONG dest, LONG val )
 {
     LONG ret = 0;
-    __asm__(
+    __asm__ __volatile__(
         "0:    lwarx %0,0,%1\n"
         "      stwcx. %2,0,%1\n"
         "      bne- 0b\n"
@@ -2032,7 +2032,7 @@
 {
     LONG ret = 0;
     LONG zero = 0;
-    __asm__(
+    __asm__ __volatile__(
         "0:    lwarx %0, %3, %1\n"
         "      add %0, %2, %0\n"
         "      stwcx. %0, %3, %1\n"

[Index of Archives]     [Gimp for Windows]     [Red Hat]     [Samba]     [Yosemite Camping]     [Graphics Cards]     [Wine Home]

  Powered by Linux