diff options
author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-07-12 08:30:57 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-07-12 08:30:57 -0700 |
commit | b2d6744849b5bf6b4593b81c136772df7a238ac9 (patch) | |
tree | f27260a0b16412449c4205207af114646c29e2c4 /include/asm-s390/irqflags.h | |
parent | c67646641cab01c93a56674bfcd963f55442dad5 (diff) | |
parent | d2c993d845781d160a7ef759a3e65c6892c4a270 (diff) | |
download | linux-rt-b2d6744849b5bf6b4593b81c136772df7a238ac9.tar.gz |
Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6
* 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6:
[S390] Fix sparse warnings.
[S390] path grouping and path verifications fixes.
[S390] xpram module parameter parsing.
[S390] cpu_relax() is supposed to have barrier() semantics.
[S390] fix futex_atomic_cmpxchg_inatomic
[S390] subchannel register/unregister mutex.
[S390] raw_local_save_flags/raw_local_irq_restore type check
[S390] __builtin_trap() and gcc version.
Diffstat (limited to 'include/asm-s390/irqflags.h')
-rw-r--r-- | include/asm-s390/irqflags.h | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/include/asm-s390/irqflags.h b/include/asm-s390/irqflags.h index 65f4db627e7a..3b566a5b3cc7 100644 --- a/include/asm-s390/irqflags.h +++ b/include/asm-s390/irqflags.h @@ -25,16 +25,22 @@ __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_local_save_flags(x) \ +do { \ + typecheck(unsigned long, x); \ + __asm__ __volatile__("stosm 0(%1),0" : "=m" (x) : "a" (&x), "m" (x) ); \ +} while (0) + +#define raw_local_irq_restore(x) \ +do { \ + typecheck(unsigned long, x); \ + __asm__ __volatile__("ssm 0(%0)" : : "a" (&x), "m" (x) : "memory"); \ +} while (0) #define raw_irqs_disabled() \ ({ \ unsigned long flags; \ - local_save_flags(flags); \ + raw_local_save_flags(flags); \ !((flags >> __FLAG_SHIFT) & 3); \ }) |