Blame mono-24-ppc-glocks.patch
|
Paul F. Johnson |
e9de6c8 |
--- mono-131222-orig/libgc/include/private/gc_locks.h 2009-02-03 19:00:12.000000000 -0500
|
|
Paul F. Johnson |
e9de6c8 |
+++ mono-131222-patched/libgc/include/private/gc_locks.h 2009-04-09 15:20:11.000000000 -0400
|
|
Paul F. Johnson |
e9de6c8 |
@@ -160,15 +160,15 @@
|
|
Paul F. Johnson |
e9de6c8 |
int temp = 1; /* locked value */
|
|
Paul F. Johnson |
e9de6c8 |
|
|
Paul F. Johnson |
e9de6c8 |
__asm__ __volatile__(
|
|
Paul F. Johnson |
e9de6c8 |
- "1:\tlwarx %0,0,%3\n" /* load and reserve */
|
|
Paul F. Johnson |
e9de6c8 |
+ "1:\tlwarx %0,0,%1\n" /* load and reserve */
|
|
Paul F. Johnson |
e9de6c8 |
"\tcmpwi %0, 0\n" /* if load is */
|
|
Paul F. Johnson |
e9de6c8 |
"\tbne 2f\n" /* non-zero, return already set */
|
|
Paul F. Johnson |
e9de6c8 |
"\tstwcx. %2,0,%1\n" /* else store conditional */
|
|
Paul F. Johnson |
e9de6c8 |
"\tbne- 1b\n" /* retry if lost reservation */
|
|
Paul F. Johnson |
e9de6c8 |
"\tsync\n" /* import barrier */
|
|
Paul F. Johnson |
e9de6c8 |
"2:\t\n" /* oldval is zero if we set */
|
|
Paul F. Johnson |
e9de6c8 |
- : "=&r"(oldval), "=p"(addr)
|
|
Paul F. Johnson |
e9de6c8 |
- : "r"(temp), "1"(addr)
|
|
Paul F. Johnson |
e9de6c8 |
+ : "=&r"(oldval)
|
|
Paul F. Johnson |
e9de6c8 |
+ : "r"(addr), "r"(temp)
|
|
Paul F. Johnson |
e9de6c8 |
: "cr0","memory");
|
|
Paul F. Johnson |
e9de6c8 |
return oldval;
|
|
Paul F. Johnson |
e9de6c8 |
}
|