File: /usr/src/linux/include/asm-s390/softirq.h

1     /*
2      *  include/asm-s390/softirq.h
3      *
4      *  S390 version
5      *
6      *  Derived from "include/asm-i386/softirq.h"
7      */
8     
9     #ifndef __ASM_SOFTIRQ_H
10     #define __ASM_SOFTIRQ_H
11     
12     #ifndef __LINUX_SMP_H
13     #include <linux/smp.h>
14     #endif
15     
16     #include <asm/atomic.h>
17     #include <asm/hardirq.h>
18     #include <asm/lowcore.h>
19     
20     #define __cpu_bh_enable(cpu) \
21     		do { barrier(); local_bh_count(cpu)--; } while (0)
22     #define cpu_bh_disable(cpu) \
23     		do { local_bh_count(cpu)++; barrier(); } while (0)
24     
25     #define local_bh_disable()      cpu_bh_disable(smp_processor_id())
26     #define __local_bh_enable()     __cpu_bh_enable(smp_processor_id())
27     
28     #define in_softirq() (local_bh_count(smp_processor_id()) != 0)
29     
30     #define local_bh_enable()			          	        \
31     do {							                \
32     	unsigned int *ptr = &local_bh_count(smp_processor_id());        \
33     	barrier();                                                      \
34     	if (!--*ptr)							\
35     		if (softirq_pending(smp_processor_id()))		\
36     			do_softirq();					\
37     } while (0)
38     
39     #endif	/* __ASM_SOFTIRQ_H */
40     
41     
42     
43     
44     
45     
46     
47