Skip to content

Commit c8a91c2

Browse files
committed
s390/atomic: move remaining inline assemblies to atomic_ops.h
Move all remaining inline assemblies from atomic.h to atomic_ops.h. That way all atomic inline assemblies are contained within only a single header file. Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
1 parent 6000b5f commit c8a91c2

2 files changed

Lines changed: 38 additions & 18 deletions

File tree

arch/s390/include/asm/atomic.h

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,12 @@
1717

1818
static inline int atomic_read(const atomic_t *v)
1919
{
20-
int c;
21-
22-
asm volatile(
23-
" l %0,%1\n"
24-
: "=d" (c) : "Q" (v->counter));
25-
return c;
20+
return __atomic_read(v);
2621
}
2722

2823
static inline void atomic_set(atomic_t *v, int i)
2924
{
30-
asm volatile(
31-
" st %1,%0\n"
32-
: "=Q" (v->counter) : "d" (i));
25+
__atomic_set(v, i);
3326
}
3427

3528
static inline int atomic_add_return(int i, atomic_t *v)
@@ -78,19 +71,12 @@ static inline int atomic_cmpxchg(atomic_t *v, int old, int new)
7871

7972
static inline s64 atomic64_read(const atomic64_t *v)
8073
{
81-
s64 c;
82-
83-
asm volatile(
84-
" lg %0,%1\n"
85-
: "=d" (c) : "Q" (v->counter));
86-
return c;
74+
return __atomic64_read(v);
8775
}
8876

8977
static inline void atomic64_set(atomic64_t *v, s64 i)
9078
{
91-
asm volatile(
92-
" stg %1,%0\n"
93-
: "=Q" (v->counter) : "d" (i));
79+
__atomic64_set(v, i);
9480
}
9581

9682
static inline s64 atomic64_add_return(s64 i, atomic64_t *v)

arch/s390/include/asm/atomic_ops.h

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,40 @@
88
#ifndef __ARCH_S390_ATOMIC_OPS__
99
#define __ARCH_S390_ATOMIC_OPS__
1010

11+
static inline int __atomic_read(const atomic_t *v)
12+
{
13+
int c;
14+
15+
asm volatile(
16+
" l %0,%1\n"
17+
: "=d" (c) : "Q" (v->counter));
18+
return c;
19+
}
20+
21+
static inline void __atomic_set(atomic_t *v, int i)
22+
{
23+
asm volatile(
24+
" st %1,%0\n"
25+
: "=Q" (v->counter) : "d" (i));
26+
}
27+
28+
static inline s64 __atomic64_read(const atomic64_t *v)
29+
{
30+
s64 c;
31+
32+
asm volatile(
33+
" lg %0,%1\n"
34+
: "=d" (c) : "Q" (v->counter));
35+
return c;
36+
}
37+
38+
static inline void __atomic64_set(atomic64_t *v, s64 i)
39+
{
40+
asm volatile(
41+
" stg %1,%0\n"
42+
: "=Q" (v->counter) : "d" (i));
43+
}
44+
1145
#ifdef CONFIG_HAVE_MARCH_Z196_FEATURES
1246

1347
#define __ATOMIC_OP(op_name, op_type, op_string, op_barrier) \

0 commit comments

Comments
 (0)