[S390] use inline assembly contraints available with gcc 3.3.3
Drop support to compile the kernel with gcc versions older than 3.3.3. This allows us to use the "Q" inline assembly contraint on some more inline assemblies without duplicating a lot of complex code (e.g. __xchg and __cmpxchg). The distinction for older gcc versions can be removed which saves a few lines and simplifies the code. Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:

committed by
Martin Schwidefsky

parent
d1bf85902c
commit
987bcdacb1
@@ -8,8 +8,6 @@
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 2)
|
||||
|
||||
/* store then or system mask. */
|
||||
#define __raw_local_irq_stosm(__or) \
|
||||
({ \
|
||||
@@ -36,40 +34,6 @@
|
||||
asm volatile("ssm %0" : : "Q" (__mask) : "memory"); \
|
||||
})
|
||||
|
||||
#else /* __GNUC__ */
|
||||
|
||||
/* store then or system mask. */
|
||||
#define __raw_local_irq_stosm(__or) \
|
||||
({ \
|
||||
unsigned long __mask; \
|
||||
asm volatile( \
|
||||
" stosm 0(%1),%2" \
|
||||
: "=m" (__mask) \
|
||||
: "a" (&__mask), "i" (__or) : "memory"); \
|
||||
__mask; \
|
||||
})
|
||||
|
||||
/* store then and system mask. */
|
||||
#define __raw_local_irq_stnsm(__and) \
|
||||
({ \
|
||||
unsigned long __mask; \
|
||||
asm volatile( \
|
||||
" stnsm 0(%1),%2" \
|
||||
: "=m" (__mask) \
|
||||
: "a" (&__mask), "i" (__and) : "memory"); \
|
||||
__mask; \
|
||||
})
|
||||
|
||||
/* set system mask. */
|
||||
#define __raw_local_irq_ssm(__mask) \
|
||||
({ \
|
||||
asm volatile( \
|
||||
" ssm 0(%0)" \
|
||||
: : "a" (&__mask), "m" (__mask) : "memory"); \
|
||||
})
|
||||
|
||||
#endif /* __GNUC__ */
|
||||
|
||||
/* interrupt control.. */
|
||||
static inline unsigned long raw_local_irq_enable(void)
|
||||
{
|
||||
|
Reference in New Issue
Block a user