diff options
| author | Linus Torvalds <torvalds@athlon.transmeta.com> | 2002-02-04 20:09:44 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@athlon.transmeta.com> | 2002-02-04 20:09:44 -0800 |
| commit | a67f1b5da2cf8b14395596048c876247b894aa5c (patch) | |
| tree | 0f125e709fddc4d32579fb267ede0f9c8079ff11 /include/asm-s390 | |
| parent | e9e7d7fa16122d7bfa6f87188828baf6080cb02e (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.h | 34 |
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 */ |
