Mac OS X Support : General PowerPC fix for gcc in interlocked.c
Pierre d'Herbemont
stegefin at free.fr
Sat May 3 15:04:55 CDT 2003
Hi,
Here is an other fix for the powerpc interlocked functions.
Thanks,
Pierre
Modified files:
libs/port/interlocked.c
ChangeLog:
Add register preservation when using lawrx instruction . Also fix ';'
ending to '\n' ending for a better compatibility with darwin's ld.
-------------- next part --------------
Index: libs/port/interlocked.c
===================================================================
RCS file: /home/wine/wine/libs/port/interlocked.c,v
retrieving revision 1.1
diff -u -r1.1 interlocked.c
--- libs/port/interlocked.c 20 Mar 2003 22:06:16 -0000 1.1
+++ libs/port/interlocked.c 3 May 2003 19:19:56 -0000
@@ -107,11 +107,11 @@
long ret = 0;
long scratch;
__asm__ __volatile__(
- "0: lwarx %0,0,%2 ;"
+ "0: lwarx %0,0,%2 \n"
" xor. %1,%4,%0;"
- " bne 1f;"
- " stwcx. %3,0,%2;"
- " bne- 0b;"
+ " bne 1f\n"
+ " stwcx. %3,0,%2\n"
+ " bne- 0b\n"
"1: "
: "=&r"(ret), "=&r"(scratch)
: "r"(dest), "r"(xchg), "r"(compare)
@@ -124,15 +124,15 @@
long ret = 0;
long scratch;
__asm__ __volatile__(
- "0: lwarx %0,0,%2 ;"
- " xor. %1,%4,%0;"
- " bne 1f;"
- " stwcx. %3,0,%2;"
- " bne- 0b;"
+ "0: lwarx %0,0,%2 \n"
+ " xor. %1,%4,%0\n"
+ " bne 1f\n"
+ " stwcx. %3,0,%2\n"
+ " bne- 0b\n"
"1: "
: "=&r"(ret), "=&r"(scratch)
: "r"(dest), "r"(xchg), "r"(compare)
- : "cr0","memory");
+ : "cr0","memory","r0");
return ret;
}
@@ -141,13 +141,13 @@
long ret = 0;
long zero = 0;
__asm__ __volatile__(
- "0: lwarx %0, %3, %1;"
- " add %0, %2, %0;"
- " stwcx. %0, %3, %1;"
- " bne- 0b;"
+ "0: lwarx %0, %3, %1\n"
+ " add %0, %2, %0\n"
+ " stwcx. %0, %3, %1\n"
+ " bne- 0b\n"
: "=&r" (ret)
: "r"(dest), "r"(incr), "r"(zero)
- : "cr0", "memory"
+ : "cr0", "memory", "r0"
);
return ret-incr;
}
@@ -156,12 +156,12 @@
{
long ret = 0;
__asm__ __volatile__(
- "0: lwarx %0,0,%1 ;"
- " stwcx. %2,0,%1;"
- " bne- 0b;"
+ "0: lwarx %0,0,%1 \n"
+ " stwcx. %2,0,%1\n"
+ " bne- 0b\n"
: "=&r"(ret)
: "r"(dest), "r"(val)
- : "cr0","memory");
+ : "cr0","memory","r0");
return ret;
}
@@ -169,12 +169,12 @@
{
void *ret = NULL;
__asm__ __volatile__(
- "0: lwarx %0,0,%1 ;"
- " stwcx. %2,0,%1;"
- " bne- 0b;"
+ "0: lwarx %0,0,%1 \n"
+ " stwcx. %2,0,%1 \n"
+ " bne- 0b \n"
: "=&r"(ret)
: "r"(dest), "r"(val)
- : "cr0","memory");
+ : "cr0","memory","r0");
return ret;
}
More information about the wine-patches
mailing list