42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
-
+
|
: "=&r"(i)
: "r"(i), "r"(p)
);
return i;
}
static OF_INLINE void*
static OF_INLINE void *_Nullable
of_atomic_ptr_add(void *volatile _Nullable *_Nonnull p, intptr_t i)
{
__asm__ __volatile__ (
"0:\n\t"
"lwarx %0, 0, %2\n\t"
"add %0, %0, %1\n\t"
"stwcx. %0, 0, %2\n\t"
|
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
-
+
|
: "=&r"(i)
: "r"(i), "r"(p)
);
return i;
}
static OF_INLINE void*
static OF_INLINE void *_Nullable
of_atomic_ptr_sub(void *volatile _Nullable *_Nonnull p, intptr_t i)
{
__asm__ __volatile__ (
"0:\n\t"
"lwarx %0, 0, %2\n\t"
"sub %0, %0, %1\n\t"
"stwcx. %0, 0, %2\n\t"
|