mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 11:11:45 -04:00
[PATCH] lockdep: irqtrace subsystem, s390 support
irqtrace support for s390. Signed-off-by: Heiko Carstens <[email protected]> Signed-off-by: Ingo Molnar <[email protected]> Cc: Martin Schwidefsky <[email protected]> Cc: Arjan van de Ven <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
6375e2b74c
commit
1f194a4c39
9 changed files with 113 additions and 38 deletions
50
include/asm-s390/irqflags.h
Normal file
50
include/asm-s390/irqflags.h
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
/*
|
||||
* include/asm-s390/irqflags.h
|
||||
*
|
||||
* Copyright (C) IBM Corp. 2006
|
||||
* Author(s): Heiko Carstens <heiko.carstens@de.ibm.com>
|
||||
*/
|
||||
|
||||
#ifndef __ASM_IRQFLAGS_H
|
||||
#define __ASM_IRQFLAGS_H
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
/* interrupt control.. */
|
||||
#define raw_local_irq_enable() ({ \
|
||||
unsigned long __dummy; \
|
||||
__asm__ __volatile__ ( \
|
||||
"stosm 0(%1),0x03" \
|
||||
: "=m" (__dummy) : "a" (&__dummy) : "memory" ); \
|
||||
})
|
||||
|
||||
#define raw_local_irq_disable() ({ \
|
||||
unsigned long __flags; \
|
||||
__asm__ __volatile__ ( \
|
||||
"stnsm 0(%1),0xfc" : "=m" (__flags) : "a" (&__flags) ); \
|
||||
__flags; \
|
||||
})
|
||||
|
||||
#define raw_local_save_flags(x) \
|
||||
__asm__ __volatile__("stosm 0(%1),0" : "=m" (x) : "a" (&x), "m" (x) )
|
||||
|
||||
#define raw_local_irq_restore(x) \
|
||||
__asm__ __volatile__("ssm 0(%0)" : : "a" (&x), "m" (x) : "memory")
|
||||
|
||||
#define raw_irqs_disabled() \
|
||||
({ \
|
||||
unsigned long flags; \
|
||||
local_save_flags(flags); \
|
||||
!((flags >> __FLAG_SHIFT) & 3); \
|
||||
})
|
||||
|
||||
static inline int raw_irqs_disabled_flags(unsigned long flags)
|
||||
{
|
||||
return !((flags >> __FLAG_SHIFT) & 3);
|
||||
}
|
||||
|
||||
/* For spinlocks etc */
|
||||
#define raw_local_irq_save(x) ((x) = raw_local_irq_disable())
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* __ASM_IRQFLAGS_H */
|
||||
|
|
@ -301,34 +301,6 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size)
|
|||
#define set_mb(var, value) do { var = value; mb(); } while (0)
|
||||
#define set_wmb(var, value) do { var = value; wmb(); } while (0)
|
||||
|
||||
/* interrupt control.. */
|
||||
#define local_irq_enable() ({ \
|
||||
unsigned long __dummy; \
|
||||
__asm__ __volatile__ ( \
|
||||
"stosm 0(%1),0x03" \
|
||||
: "=m" (__dummy) : "a" (&__dummy) : "memory" ); \
|
||||
})
|
||||
|
||||
#define local_irq_disable() ({ \
|
||||
unsigned long __flags; \
|
||||
__asm__ __volatile__ ( \
|
||||
"stnsm 0(%1),0xfc" : "=m" (__flags) : "a" (&__flags) ); \
|
||||
__flags; \
|
||||
})
|
||||
|
||||
#define local_save_flags(x) \
|
||||
__asm__ __volatile__("stosm 0(%1),0" : "=m" (x) : "a" (&x), "m" (x) )
|
||||
|
||||
#define local_irq_restore(x) \
|
||||
__asm__ __volatile__("ssm 0(%0)" : : "a" (&x), "m" (x) : "memory")
|
||||
|
||||
#define irqs_disabled() \
|
||||
({ \
|
||||
unsigned long flags; \
|
||||
local_save_flags(flags); \
|
||||
!((flags >> __FLAG_SHIFT) & 3); \
|
||||
})
|
||||
|
||||
#ifdef __s390x__
|
||||
|
||||
#define __ctl_load(array, low, high) ({ \
|
||||
|
|
@ -442,8 +414,7 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size)
|
|||
})
|
||||
#endif /* __s390x__ */
|
||||
|
||||
/* For spinlocks etc */
|
||||
#define local_irq_save(x) ((x) = local_irq_disable())
|
||||
#include <linux/irqflags.h>
|
||||
|
||||
/*
|
||||
* Use to set psw mask except for the first byte which
|
||||
|
|
@ -482,4 +453,3 @@ extern void (*_machine_power_off)(void);
|
|||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue