62 lines
1.3 KiB
Diff
62 lines
1.3 KiB
Diff
--- boost/detail/sp_counted_base_gcc_ppc.hpp
|
|
+++ boost/detail/sp_counted_base_gcc_ppc.hpp
|
|
@@ -41,14 +41,13 @@
|
|
__asm__
|
|
(
|
|
"0:\n\t"
|
|
- "lwarx %1, 0, %2\n\t"
|
|
+ "lwarx %1, %y0\n\t"
|
|
"addi %1, %1, 1\n\t"
|
|
- "stwcx. %1, 0, %2\n\t"
|
|
+ "stwcx. %1, %y0\n\t"
|
|
"bne- 0b":
|
|
|
|
- "=m"( *pw ), "=&b"( tmp ):
|
|
- "r"( pw ), "m"( *pw ):
|
|
- "cc"
|
|
+ "+Z"( *pw ), "=&b"( tmp )::
|
|
+ "memory", "cc"
|
|
);
|
|
}
|
|
|
|
@@ -62,14 +61,13 @@
|
|
(
|
|
"sync\n\t"
|
|
"0:\n\t"
|
|
- "lwarx %1, 0, %2\n\t"
|
|
+ "lwarx %1, %y0\n\t"
|
|
"addi %1, %1, -1\n\t"
|
|
- "stwcx. %1, 0, %2\n\t"
|
|
+ "stwcx. %1, %y0\n\t"
|
|
"bne- 0b\n\t"
|
|
"isync":
|
|
|
|
- "=m"( *pw ), "=&b"( rv ):
|
|
- "r"( pw ), "m"( *pw ):
|
|
+ "+Z"( *pw ), "=&b"( rv )::
|
|
"memory", "cc"
|
|
);
|
|
|
|
@@ -86,17 +84,16 @@
|
|
__asm__
|
|
(
|
|
"0:\n\t"
|
|
- "lwarx %1, 0, %2\n\t"
|
|
+ "lwarx %1, %y0\n\t"
|
|
"cmpwi %1, 0\n\t"
|
|
"beq 1f\n\t"
|
|
"addi %1, %1, 1\n\t"
|
|
"1:\n\t"
|
|
- "stwcx. %1, 0, %2\n\t"
|
|
+ "stwcx. %1, %y0\n\t"
|
|
"bne- 0b":
|
|
|
|
- "=m"( *pw ), "=&b"( rv ):
|
|
- "r"( pw ), "m"( *pw ):
|
|
- "cc"
|
|
+ "+Z"( *pw ), "=&b"( rv )::
|
|
+ "memory", "cc"
|
|
);
|
|
|
|
return rv;
|