Commit c8a91c28 authored by Heiko Carstens's avatar Heiko Carstens
Browse files

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: default avatarHeiko Carstens <hca@linux.ibm.com>
parent 6000b5f4
Loading
Loading
Loading
Loading
+4 −18
Original line number Diff line number Diff line
@@ -17,19 +17,12 @@

static inline int atomic_read(const atomic_t *v)
{
	int c;

	asm volatile(
		"	l	%0,%1\n"
		: "=d" (c) : "Q" (v->counter));
	return c;
	return __atomic_read(v);
}

static inline void atomic_set(atomic_t *v, int i)
{
	asm volatile(
		"	st	%1,%0\n"
		: "=Q" (v->counter) : "d" (i));
	__atomic_set(v, i);
}

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)

static inline s64 atomic64_read(const atomic64_t *v)
{
	s64 c;

	asm volatile(
		"	lg	%0,%1\n"
		: "=d" (c) : "Q" (v->counter));
	return c;
	return __atomic64_read(v);
}

static inline void atomic64_set(atomic64_t *v, s64 i)
{
	asm volatile(
		"	stg	%1,%0\n"
		: "=Q" (v->counter) : "d" (i));
	__atomic64_set(v, i);
}

static inline s64 atomic64_add_return(s64 i, atomic64_t *v)
+34 −0
Original line number Diff line number Diff line
@@ -8,6 +8,40 @@
#ifndef __ARCH_S390_ATOMIC_OPS__
#define __ARCH_S390_ATOMIC_OPS__

static inline int __atomic_read(const atomic_t *v)
{
	int c;

	asm volatile(
		"	l	%0,%1\n"
		: "=d" (c) : "Q" (v->counter));
	return c;
}

static inline void __atomic_set(atomic_t *v, int i)
{
	asm volatile(
		"	st	%1,%0\n"
		: "=Q" (v->counter) : "d" (i));
}

static inline s64 __atomic64_read(const atomic64_t *v)
{
	s64 c;

	asm volatile(
		"	lg	%0,%1\n"
		: "=d" (c) : "Q" (v->counter));
	return c;
}

static inline void __atomic64_set(atomic64_t *v, s64 i)
{
	asm volatile(
		"	stg	%1,%0\n"
		: "=Q" (v->counter) : "d" (i));
}

#ifdef CONFIG_HAVE_MARCH_Z196_FEATURES

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