1#ifndef __ASM_SOFTIRQ_H
2#define __ASM_SOFTIRQ_H
3
4#include <asm/atomic.h>
5#include <asm/hardirq.h>
6
7#define local_bh_disable()                      \
8do {                                            \
9        local_bh_count(smp_processor_id())++;   \
10        barrier();                              \
11} while (0)
12
13#define __local_bh_enable()                     \
14do {                                            \
15        barrier();                              \
16        local_bh_count(smp_processor_id())--;   \
17} while (0)
18
19#define local_bh_enable()                               \
20do {                                                    \
21        if (!--local_bh_count(smp_processor_id())       \
22            && softirq_pending(smp_processor_id())) {   \
23                do_softirq();                           \
24                __sti();                                \
25        }                                               \
26} while (0)
27
28#define in_softirq() (local_bh_count(smp_processor_id()) != 0)
29
30#endif	/* __ASM_SOFTIRQ_H */
31