summaryrefslogtreecommitdiff
path: root/include/asm-s390
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@athlon.transmeta.com>2002-02-04 20:09:44 -0800
committerLinus Torvalds <torvalds@athlon.transmeta.com>2002-02-04 20:09:44 -0800
commita67f1b5da2cf8b14395596048c876247b894aa5c (patch)
tree0f125e709fddc4d32579fb267ede0f9c8079ff11 /include/asm-s390
parente9e7d7fa16122d7bfa6f87188828baf6080cb02e (diff)
v2.4.8 -> v2.4.8.1
- Rui Sousa: emu10k1 module fixes, remove joystick part. - Alan Cox: driver merges - Andrea Arkangeli: alpha updates - David Woodhouse: up_and_exit -> complete_and_exit - David Miller: sparc and network update - Andrew Morton: update 3c59x driver - Neil Brown: NFS export VFAT, knfsd cleanups, raid fixes - Ben Collins: ieee1394 updates - Paul Mackerras: PPC update - me: make sure we don't lose position bits in "filldir()"
Diffstat (limited to 'include/asm-s390')
-rw-r--r--include/asm-s390/softirq.h34
1 files changed, 15 insertions, 19 deletions
diff --git a/include/asm-s390/softirq.h b/include/asm-s390/softirq.h
index b5fb68fe173f..839dbe4b9599 100644
--- a/include/asm-s390/softirq.h
+++ b/include/asm-s390/softirq.h
@@ -17,31 +17,27 @@
#include <asm/hardirq.h>
#include <asm/lowcore.h>
-#define local_bh_disable() \
-do { \
- local_bh_count(smp_processor_id())++; \
- barrier(); \
-} while (0)
+#define __cpu_bh_enable(cpu) \
+ do { barrier(); local_bh_count(cpu)--; } while (0)
+#define cpu_bh_disable(cpu) \
+ do { local_bh_count(cpu)++; barrier(); } while (0)
-#define __local_bh_enable() \
-do { \
- barrier(); \
- local_bh_count(smp_processor_id())--; \
-} while (0)
+#define local_bh_disable() cpu_bh_disable(smp_processor_id())
+#define __local_bh_enable() __cpu_bh_enable(smp_processor_id())
+
+#define in_softirq() (local_bh_count(smp_processor_id()) != 0)
-#define local_bh_enable() \
-do { \
- if (!--local_bh_count(smp_processor_id()) \
- && softirq_pending(smp_processor_id())) { \
- do_softirq(); \
- __sti(); \
- } \
+#define local_bh_enable() \
+do { \
+ unsigned int *ptr = &local_bh_count(smp_processor_id()); \
+ barrier(); \
+ if (!--*ptr) \
+ if (softirq_pending(smp_processor_id())) \
+ do_softirq(); \
} while (0)
#define __cpu_raise_softirq(cpu, nr) (softirq_pending(cpu) |= (1<<nr))
-#define in_softirq() (local_bh_count(smp_processor_id()) != 0)
-
#endif /* __ASM_SOFTIRQ_H */