Browse Source

[S390] add generic atomic64 support for 31 bit

Performance counters need 64 bit atomic operations.
To keep the patch small we use the simple generic atomic64_t implementation.
The native implementation follows with the next kernel.

Fixes this build bug:

In file included from kernel/sched.c:42:
include/linux/perf_counter.h:427: error: expected specifier-qualifier-list before 'atomic64_t'

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Heiko Carstens 16 years ago
parent
commit
25ca1251dc
2 changed files with 7 additions and 1 deletions
  1. 1 0
      arch/s390/Kconfig
  2. 6 1
      arch/s390/include/asm/atomic.h

+ 1 - 0
arch/s390/Kconfig

@@ -95,6 +95,7 @@ config S390
 	select HAVE_ARCH_TRACEHOOK
 	select HAVE_ARCH_TRACEHOOK
 	select INIT_ALL_POSSIBLE
 	select INIT_ALL_POSSIBLE
 	select HAVE_PERF_COUNTERS
 	select HAVE_PERF_COUNTERS
+	select GENERIC_ATOMIC64 if !64BIT
 
 
 config SCHED_OMIT_FRAME_POINTER
 config SCHED_OMIT_FRAME_POINTER
 	bool
 	bool

+ 6 - 1
arch/s390/include/asm/atomic.h

@@ -268,7 +268,12 @@ static __inline__ int atomic64_add_unless(atomic64_t *v,
 #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0)
 #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0)
 
 
 #undef __CSG_LOOP
 #undef __CSG_LOOP
-#endif
+
+#else /* __s390x__ */
+
+#include <asm-generic/atomic64.h>
+
+#endif /* __s390x__ */
 
 
 #define smp_mb__before_atomic_dec()	smp_mb()
 #define smp_mb__before_atomic_dec()	smp_mb()
 #define smp_mb__after_atomic_dec()	smp_mb()
 #define smp_mb__after_atomic_dec()	smp_mb()