Skip to content

Commit 554f884

Browse files
hcahcaAlexander Gordeev
authored andcommitted
s390/futex: Cleanup futex_atomic_cmpxchg_inatomic()
Cleanup the futex_atomic_cmpxchg_inatomic() inline assembly to make it a bit more readable. Acked-by: Ilya Leoshkevich <iii@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
1 parent 9e8f72f commit 554f884

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

arch/s390/include/asm/futex.h

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -71,19 +71,20 @@ int arch_futex_atomic_op_inuser(int op, int oparg, int *oval, u32 __user *uaddr)
7171
static inline int futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
7272
u32 oldval, u32 newval)
7373
{
74-
int ret;
74+
int rc;
7575

76-
asm volatile(
77-
" sacf 256\n"
78-
"0: cs %1,%4,0(%5)\n"
79-
"1: la %0,0\n"
80-
"2: sacf 768\n"
81-
EX_TABLE(0b,2b) EX_TABLE(1b,2b)
82-
: "=d" (ret), "+d" (oldval), "=m" (*uaddr)
83-
: "0" (-EFAULT), "d" (newval), "a" (uaddr), "m" (*uaddr)
76+
asm_inline volatile(
77+
" sacf 256\n"
78+
"0: cs %[old],%[new],%[uaddr]\n"
79+
"1: lhi %[rc],0\n"
80+
"2: sacf 768\n"
81+
EX_TABLE_UA_FAULT(0b, 2b, %[rc])
82+
EX_TABLE_UA_FAULT(1b, 2b, %[rc])
83+
: [rc] "=d" (rc), [old] "+d" (oldval), [uaddr] "+Q" (*uaddr)
84+
: [new] "d" (newval)
8485
: "cc", "memory");
8586
*uval = oldval;
86-
return ret;
87+
return rc;
8788
}
8889

8990
#endif /* _ASM_S390_FUTEX_H */

0 commit comments

Comments
 (0)