projects
/
userspace-rcu.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
s390: uatomic add missing xchg return
[userspace-rcu.git]
/
urcu
/
uatomic_arch_s390.h
diff --git
a/urcu/uatomic_arch_s390.h
b/urcu/uatomic_arch_s390.h
index f8e8dffa6c04e5d2e74599fea8b3c9c11dddf8f4..a8c8706e7b10c372ffe065394772b3c5089edbcb 100644
(file)
--- a/
urcu/uatomic_arch_s390.h
+++ b/
urcu/uatomic_arch_s390.h
@@
-63,6
+63,7
@@
unsigned long _uatomic_exchange(volatile void *addr, unsigned long val, int len)
: "=&r"(old_val), "=m" (*addr)
: "r"(val), "m" (*addr)
: "memory", "cc");
: "=&r"(old_val), "=m" (*addr)
: "r"(val), "m" (*addr)
: "memory", "cc");
+ return old_val;
}
#if (BITS_PER_LONG == 64)
case 8:
}
#if (BITS_PER_LONG == 64)
case 8:
@@
-75,6
+76,7
@@
unsigned long _uatomic_exchange(volatile void *addr, unsigned long val, int len)
: "=&r"(old_val), "=m" (*addr)
: "r"(val), "m" (*addr)
: "memory", "cc");
: "=&r"(old_val), "=m" (*addr)
: "r"(val), "m" (*addr)
: "memory", "cc");
+ return old_val;
}
#endif
default:
}
#endif
default:
@@
-92,7
+94,7
@@
unsigned long _uatomic_exchange(volatile void *addr, unsigned long val, int len)
static inline __attribute__((always_inline))
unsigned long _uatomic_cmpxchg(void *addr, unsigned long old,
static inline __attribute__((always_inline))
unsigned long _uatomic_cmpxchg(void *addr, unsigned long old,
- unsigned long new, int len)
+ unsigned long
_
new, int len)
{
switch (len) {
case 4:
{
switch (len) {
case 4:
@@
-102,7
+104,7
@@
unsigned long _uatomic_cmpxchg(void *addr, unsigned long old,
__asm__ __volatile__(
" cs %0,%2,%1\n"
: "+r"(old_val), "+m"(*addr)
__asm__ __volatile__(
" cs %0,%2,%1\n"
: "+r"(old_val), "+m"(*addr)
- : "r"(new)
+ : "r"(
_
new)
: "memory", "cc");
return old_val;
}
: "memory", "cc");
return old_val;
}
@@
-112,7
+114,7
@@
unsigned long _uatomic_cmpxchg(void *addr, unsigned long old,
__asm__ __volatile__(
" csg %0,%2,%1\n"
: "+r"(old), "+m"(*addr)
__asm__ __volatile__(
" csg %0,%2,%1\n"
: "+r"(old), "+m"(*addr)
- : "r"(new)
+ : "r"(
_
new)
: "memory", "cc");
return old;
}
: "memory", "cc");
return old;
}
@@
-124,10
+126,10
@@
unsigned long _uatomic_cmpxchg(void *addr, unsigned long old,
return 0;
}
return 0;
}
-#define uatomic_cmpxchg(addr, old,
new)
\
+#define uatomic_cmpxchg(addr, old,
_new)
\
(__typeof__(*(addr))) _uatomic_cmpxchg((addr), \
(unsigned long)(old), \
(__typeof__(*(addr))) _uatomic_cmpxchg((addr), \
(unsigned long)(old), \
- (unsigned long)(
new),
\
+ (unsigned long)(
_new),
\
sizeof(*(addr)))
/* uatomic_add_return */
sizeof(*(addr)))
/* uatomic_add_return */
This page took
0.02439 seconds
and
4
git commands to generate.