From cfec5c01d3d2957f346e4560a4eee0a54195b6f6 Mon Sep 17 00:00:00 2001 From: Christoph Hellwig Date: Tue, 7 Sep 2004 17:48:45 -0700 Subject: [PATCH] [PATCH] factor out common code Since the irq handling rework in 2.5 lots of code in the individual files is the same. This patch moves that common code to . The following differences existed: - alpha, m68k, m68knommu and v850 were missing the ~PREEMPT_ACTIVE masking in the CONFIG_PREEMPT case of in_atomic(). These architectures don't support CONFIG_PREEMPT else this would have been an easily-spottbale bug - S390 didn't provide synchronize_irq as it doesn't fit into their I/O model. They now get a spurious prototype/macro - ppc added a new preemptible() macro that is provided for all architectures now. Most drivers were using as they should, but a few drivers and lots of architecture code has been updated to use instead of Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- Documentation/DocBook/kernel-hacking.tmpl | 4 +- .../firmware_sample_firmware_class.c | 3 +- arch/alpha/kernel/smp.c | 1 - arch/cris/kernel/crisksyms.c | 1 - arch/h8300/kernel/asm-offsets.c | 2 +- arch/h8300/kernel/h8300_ksyms.c | 1 - arch/h8300/kernel/ints.c | 2 +- arch/h8300/platform/h8s/ints.c | 2 +- arch/i386/kernel/i386_ksyms.c | 1 - arch/i386/lib/mmx.c | 2 +- arch/i386/mm/fault.c | 1 - arch/ia64/kernel/traps.c | 2 +- arch/ia64/mm/fault.c | 1 - arch/m68k/kernel/m68k_ksyms.c | 1 - arch/m68k/q40/q40ints.c | 2 +- arch/m68knommu/kernel/asm-offsets.c | 2 +- arch/m68knommu/kernel/m68k_ksyms.c | 1 - arch/mips/au1000/common/time.c | 2 +- arch/mips/kernel/smp.c | 1 - arch/mips/kernel/time.c | 1 - arch/mips/mips-boards/generic/time.c | 1 - arch/mips/mm/fault.c | 1 - arch/parisc/kernel/asm-offsets.c | 4 +- arch/parisc/lib/debuglocks.c | 2 +- arch/ppc/kernel/dma-mapping.c | 2 +- arch/ppc/kernel/process.c | 2 +- arch/ppc/kernel/smp.c | 1 - arch/ppc/platforms/chrp_smp.c | 1 - arch/ppc/platforms/pmac_cpufreq.c | 2 +- arch/ppc/platforms/pmac_smp.c | 2 +- arch/ppc/platforms/pmac_time.c | 2 +- arch/ppc/syslib/open_pic.c | 1 - arch/ppc/syslib/open_pic2.c | 1 - arch/ppc64/kernel/asm-offsets.c | 2 +- arch/ppc64/kernel/pmac_smp.c | 1 - arch/ppc64/kernel/pmac_time.c | 2 +- arch/ppc64/kernel/process.c | 2 +- arch/ppc64/kernel/rtc.c | 2 +- arch/ppc64/kernel/smp.c | 1 - arch/ppc64/kernel/viopath.c | 2 +- arch/ppc64/mm/tlb.c | 2 +- arch/s390/mm/fault.c | 2 +- arch/sh/kernel/sh_ksyms.c | 1 - arch/sh/kernel/smp.c | 1 - arch/sh/mm/fault-nommu.c | 1 - arch/sh/mm/fault.c | 1 - arch/sh/mm/tlb-sh3.c | 1 - arch/sh/mm/tlb-sh4.c | 1 - arch/sh64/kernel/sh_ksyms.c | 1 - arch/sh64/mm/fault.c | 1 - arch/sh64/mm/tlbmiss.c | 1 - arch/sparc/kernel/irq.c | 1 - arch/sparc/kernel/setup.c | 1 - arch/sparc/kernel/smp.c | 1 - arch/sparc/kernel/sparc_ksyms.c | 1 - arch/sparc/kernel/sun4d_smp.c | 1 - arch/sparc/kernel/sun4m_smp.c | 1 - arch/sparc64/kernel/irq.c | 1 - arch/sparc64/kernel/setup.c | 1 - arch/sparc64/kernel/smp.c | 1 - arch/sparc64/kernel/sparc64_ksyms.c | 1 - arch/um/drivers/stdio_console.c | 2 +- arch/um/kernel/irq.c | 2 +- arch/um/kernel/smp.c | 2 +- arch/v850/kernel/asm-consts.c | 2 +- arch/v850/kernel/v850_ksyms.c | 1 - arch/x86_64/kernel/asm-offsets.c | 2 +- arch/x86_64/kernel/x8664_ksyms.c | 1 - arch/x86_64/mm/fault.c | 1 - crypto/internal.h | 1 - drivers/base/firmware_class.c | 2 +- drivers/char/rio/linux_compat.h | 2 +- drivers/macintosh/via-pmu.c | 1 - drivers/s390/cio/cio.c | 2 +- include/asm-alpha/hardirq.h | 41 --------------- include/asm-arm/hardirq.h | 38 -------------- include/asm-arm26/hardirq.h | 35 ------------- include/asm-cris/hardirq.h | 36 ------------- include/asm-generic/local.h | 2 +- include/asm-h8300/hardirq.h | 40 --------------- include/asm-i386/hardirq.h | 42 +-------------- include/asm-ia64/hardirq.h | 41 --------------- include/asm-m68k/hardirq.h | 36 ------------- include/asm-m68k/system.h | 2 +- include/asm-m68knommu/hardirq.h | 46 ----------------- include/asm-mips/hardirq.h | 40 --------------- include/asm-parisc/hardirq.h | 42 --------------- include/asm-ppc/hardirq.h | 44 ---------------- include/asm-ppc64/hardirq.h | 45 ---------------- include/asm-s390/hardirq.h | 42 ++------------- include/asm-s390/irq.h | 2 +- include/asm-sh/hardirq.h | 41 +-------------- include/asm-sparc/hardirq.h | 41 --------------- include/asm-sparc64/hardirq.h | 41 --------------- include/asm-v850/hardirq.h | 40 --------------- include/asm-x86_64/hardirq.h | 43 +--------------- include/linux/hardirq.h | 51 +++++++++++++++++++ include/linux/interrupt.h | 2 +- include/net/ipv6.h | 2 +- sound/oss/ali5455.c | 1 - sound/oss/au1000.c | 2 +- sound/oss/cs46xx.c | 1 - sound/oss/forte.c | 1 - sound/oss/i810_audio.c | 1 - sound/oss/ite8172.c | 2 +- sound/oss/nec_vrc5477.c | 1 - sound/oss/rme96xx.c | 2 +- sound/oss/swarm_cs4297a.c | 2 +- sound/oss/trident.c | 1 - 109 files changed, 100 insertions(+), 860 deletions(-) create mode 100644 include/linux/hardirq.h diff --git a/Documentation/DocBook/kernel-hacking.tmpl b/Documentation/DocBook/kernel-hacking.tmpl index 0424c92f5db18..cd1bc1574613f 100644 --- a/Documentation/DocBook/kernel-hacking.tmpl +++ b/Documentation/DocBook/kernel-hacking.tmpl @@ -145,7 +145,7 @@ In user context, the current pointer (indicating the task we are currently executing) is valid, and in_interrupt() - (include/asm/hardirq.h) is false + (include/linux/interrupt.h) is false . @@ -241,7 +241,7 @@ You can tell you are in a softirq (or bottom half, or tasklet) using the in_softirq() macro - (include/asm/hardirq.h). + (include/linux/interrupt.h). diff --git a/Documentation/firmware_class/firmware_sample_firmware_class.c b/Documentation/firmware_class/firmware_sample_firmware_class.c index 037c0bed9eb29..09eab2f1b3735 100644 --- a/Documentation/firmware_class/firmware_sample_firmware_class.c +++ b/Documentation/firmware_class/firmware_sample_firmware_class.c @@ -14,9 +14,8 @@ #include #include #include -#include +#include -#include "linux/firmware.h" MODULE_AUTHOR("Manuel Estrada Sainz "); MODULE_DESCRIPTION("Hackish sample for using firmware class directly"); diff --git a/arch/alpha/kernel/smp.c b/arch/alpha/kernel/smp.c index edf9b929e9375..6d4d09c439126 100644 --- a/arch/alpha/kernel/smp.c +++ b/arch/alpha/kernel/smp.c @@ -36,7 +36,6 @@ #include #include #include -#include #include #include diff --git a/arch/cris/kernel/crisksyms.c b/arch/cris/kernel/crisksyms.c index 0bb5ab6d9669d..7141bbecd7e41 100644 --- a/arch/cris/kernel/crisksyms.c +++ b/arch/cris/kernel/crisksyms.c @@ -16,7 +16,6 @@ #include #include #include -#include #include #include #include diff --git a/arch/h8300/kernel/asm-offsets.c b/arch/h8300/kernel/asm-offsets.c index 5e50c08930532..b78b82ad28a38 100644 --- a/arch/h8300/kernel/asm-offsets.c +++ b/arch/h8300/kernel/asm-offsets.c @@ -12,9 +12,9 @@ #include #include #include +#include #include #include -#include #include #define DEFINE(sym, val) \ diff --git a/arch/h8300/kernel/h8300_ksyms.c b/arch/h8300/kernel/h8300_ksyms.c index 544889fb18f0a..5a630233112ff 100644 --- a/arch/h8300/kernel/h8300_ksyms.c +++ b/arch/h8300/kernel/h8300_ksyms.c @@ -15,7 +15,6 @@ #include #include #include -#include #include #include diff --git a/arch/h8300/kernel/ints.c b/arch/h8300/kernel/ints.c index 7246e29ea01d3..edb3c4170013c 100644 --- a/arch/h8300/kernel/ints.c +++ b/arch/h8300/kernel/ints.c @@ -22,13 +22,13 @@ #include #include #include +#include #include #include #include #include #include -#include #include /* diff --git a/arch/h8300/platform/h8s/ints.c b/arch/h8300/platform/h8s/ints.c index bbefac4034e61..5441cdd12a399 100644 --- a/arch/h8300/platform/h8s/ints.c +++ b/arch/h8300/platform/h8s/ints.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include @@ -29,7 +30,6 @@ #include #include #include -#include #include #include diff --git a/arch/i386/kernel/i386_ksyms.c b/arch/i386/kernel/i386_ksyms.c index 3d07b92246d4a..b93f0332d0493 100644 --- a/arch/i386/kernel/i386_ksyms.c +++ b/arch/i386/kernel/i386_ksyms.c @@ -23,7 +23,6 @@ #include #include #include -#include #include #include #include diff --git a/arch/i386/lib/mmx.c b/arch/i386/lib/mmx.c index d6fc84f375e3d..01f8b1a2cc843 100644 --- a/arch/i386/lib/mmx.c +++ b/arch/i386/lib/mmx.c @@ -2,9 +2,9 @@ #include #include #include +#include #include -#include /* diff --git a/arch/i386/mm/fault.c b/arch/i386/mm/fault.c index f6599b30d46e8..e39f67886400a 100644 --- a/arch/i386/mm/fault.c +++ b/arch/i386/mm/fault.c @@ -24,7 +24,6 @@ #include #include -#include #include #include diff --git a/arch/ia64/kernel/traps.c b/arch/ia64/kernel/traps.c index f8991313557d6..dc120b5ed4c7e 100644 --- a/arch/ia64/kernel/traps.c +++ b/arch/ia64/kernel/traps.c @@ -14,9 +14,9 @@ #include #include /* For unblank_screen() */ #include /* for EXPORT_SYMBOL */ +#include #include -#include #include #include #include diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c index 3a427fa00bd70..ffacb680111e4 100644 --- a/arch/ia64/mm/fault.c +++ b/arch/ia64/mm/fault.c @@ -14,7 +14,6 @@ #include #include #include -#include extern void die (char *, struct pt_regs *, long); diff --git a/arch/m68k/kernel/m68k_ksyms.c b/arch/m68k/kernel/m68k_ksyms.c index 309248ac98094..fe837e31afbf3 100644 --- a/arch/m68k/kernel/m68k_ksyms.c +++ b/arch/m68k/kernel/m68k_ksyms.c @@ -16,7 +16,6 @@ #include #include #include -#include asmlinkage long long __ashldi3 (long long, int); asmlinkage long long __ashrdi3 (long long, int); diff --git a/arch/m68k/q40/q40ints.c b/arch/m68k/q40/q40ints.c index 54189735145f8..1215b5bea723a 100644 --- a/arch/m68k/q40/q40ints.c +++ b/arch/m68k/q40/q40ints.c @@ -19,12 +19,12 @@ #include #include #include +#include #include #include #include #include -#include #include #include diff --git a/arch/m68knommu/kernel/asm-offsets.c b/arch/m68knommu/kernel/asm-offsets.c index c803fe64e2ce4..02c56f5385316 100644 --- a/arch/m68knommu/kernel/asm-offsets.c +++ b/arch/m68knommu/kernel/asm-offsets.c @@ -12,9 +12,9 @@ #include #include #include +#include #include #include -#include #define DEFINE(sym, val) \ asm volatile("\n->" #sym " %0 " #val : : "i" (val)) diff --git a/arch/m68knommu/kernel/m68k_ksyms.c b/arch/m68knommu/kernel/m68k_ksyms.c index 832483b617d63..e93a5ad564962 100644 --- a/arch/m68knommu/kernel/m68k_ksyms.c +++ b/arch/m68knommu/kernel/m68k_ksyms.c @@ -16,7 +16,6 @@ #include #include #include -#include #include extern void dump_thread(struct pt_regs *, struct user *); diff --git a/arch/mips/au1000/common/time.c b/arch/mips/au1000/common/time.c index f58f454cdc8cf..a72de97275f06 100644 --- a/arch/mips/au1000/common/time.c +++ b/arch/mips/au1000/common/time.c @@ -38,11 +38,11 @@ #include #include #include +#include #include #include #include -#include #include #include diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c index 61137d771aea1..6d1c473f67d2d 100644 --- a/arch/mips/kernel/smp.c +++ b/arch/mips/kernel/smp.c @@ -35,7 +35,6 @@ #include #include #include -#include #include #include diff --git a/arch/mips/kernel/time.c b/arch/mips/kernel/time.c index 29957e96ed032..915e5539e7f26 100644 --- a/arch/mips/kernel/time.c +++ b/arch/mips/kernel/time.c @@ -29,7 +29,6 @@ #include #include #include -#include #include #include diff --git a/arch/mips/mips-boards/generic/time.c b/arch/mips/mips-boards/generic/time.c index 9348cd3e6ddde..fe7fc17305a69 100644 --- a/arch/mips/mips-boards/generic/time.c +++ b/arch/mips/mips-boards/generic/time.c @@ -31,7 +31,6 @@ #include #include -#include #include #include #include diff --git a/arch/mips/mm/fault.c b/arch/mips/mm/fault.c index 820c3af0868a5..ec8077c74e9cd 100644 --- a/arch/mips/mm/fault.c +++ b/arch/mips/mm/fault.c @@ -21,7 +21,6 @@ #include #include -#include #include #include #include diff --git a/arch/parisc/kernel/asm-offsets.c b/arch/parisc/kernel/asm-offsets.c index 64d49cb2d217d..cf8a8583fb561 100644 --- a/arch/parisc/kernel/asm-offsets.c +++ b/arch/parisc/kernel/asm-offsets.c @@ -32,11 +32,11 @@ #include #include #include -#include +#include +#include #include #include -#include #include #define DEFINE(sym, val) \ diff --git a/arch/parisc/lib/debuglocks.c b/arch/parisc/lib/debuglocks.c index 7e79f1bade35c..5166a9378cfa0 100644 --- a/arch/parisc/lib/debuglocks.c +++ b/arch/parisc/lib/debuglocks.c @@ -25,8 +25,8 @@ #include #include #include +#include /* in_interrupt() */ #include -#include /* in_interrupt() */ #undef INIT_STUCK #define INIT_STUCK 1L << 30 diff --git a/arch/ppc/kernel/dma-mapping.c b/arch/ppc/kernel/dma-mapping.c index 35419c823723a..334b8bfdc5017 100644 --- a/arch/ppc/kernel/dma-mapping.c +++ b/arch/ppc/kernel/dma-mapping.c @@ -41,11 +41,11 @@ #include #include #include +#include #include #include #include -#include #include #include #include diff --git a/arch/ppc/kernel/process.c b/arch/ppc/kernel/process.c index 97ad51ab82326..d9ab6a7de95c8 100644 --- a/arch/ppc/kernel/process.c +++ b/arch/ppc/kernel/process.c @@ -36,6 +36,7 @@ #include #include #include +#include #include #include @@ -44,7 +45,6 @@ #include #include #include -#include extern unsigned long _get_SP(void); diff --git a/arch/ppc/kernel/smp.c b/arch/ppc/kernel/smp.c index d3ffa353d29a3..dae491743fb68 100644 --- a/arch/ppc/kernel/smp.c +++ b/arch/ppc/kernel/smp.c @@ -26,7 +26,6 @@ #include #include #include -#include #include #include #include diff --git a/arch/ppc/platforms/chrp_smp.c b/arch/ppc/platforms/chrp_smp.c index 71f62a05565b8..863d1e3256ca0 100644 --- a/arch/ppc/platforms/chrp_smp.c +++ b/arch/ppc/platforms/chrp_smp.c @@ -24,7 +24,6 @@ #include #include #include -#include #include #include #include diff --git a/arch/ppc/platforms/pmac_cpufreq.c b/arch/ppc/platforms/pmac_cpufreq.c index 5b2221a141847..9ad6bc91f20a7 100644 --- a/arch/ppc/platforms/pmac_cpufreq.c +++ b/arch/ppc/platforms/pmac_cpufreq.c @@ -24,10 +24,10 @@ #include #include #include +#include #include #include #include -#include #include #include #include diff --git a/arch/ppc/platforms/pmac_smp.c b/arch/ppc/platforms/pmac_smp.c index 704742257b841..1a300ff409f50 100644 --- a/arch/ppc/platforms/pmac_smp.c +++ b/arch/ppc/platforms/pmac_smp.c @@ -32,13 +32,13 @@ #include #include #include +#include #include #include #include #include #include -#include #include #include #include diff --git a/arch/ppc/platforms/pmac_time.c b/arch/ppc/platforms/pmac_time.c index cd8e3e7c4d13e..09636546f44e5 100644 --- a/arch/ppc/platforms/pmac_time.c +++ b/arch/ppc/platforms/pmac_time.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -26,7 +27,6 @@ #include #include #include -#include #include #include diff --git a/arch/ppc/syslib/open_pic.c b/arch/ppc/syslib/open_pic.c index 7f13e744fb8bf..a22f80c8cf6e3 100644 --- a/arch/ppc/syslib/open_pic.c +++ b/arch/ppc/syslib/open_pic.c @@ -25,7 +25,6 @@ #include #include #include -#include #include "open_pic_defs.h" diff --git a/arch/ppc/syslib/open_pic2.c b/arch/ppc/syslib/open_pic2.c index 52cb4a494f305..4401e01fbfaa8 100644 --- a/arch/ppc/syslib/open_pic2.c +++ b/arch/ppc/syslib/open_pic2.c @@ -28,7 +28,6 @@ #include #include #include -#include #include "open_pic_defs.h" diff --git a/arch/ppc64/kernel/asm-offsets.c b/arch/ppc64/kernel/asm-offsets.c index 8ec589d60ef1f..60cf1ac636544 100644 --- a/arch/ppc64/kernel/asm-offsets.c +++ b/arch/ppc64/kernel/asm-offsets.c @@ -22,11 +22,11 @@ #include #include #include +#include #include #include #include #include -#include #include #include diff --git a/arch/ppc64/kernel/pmac_smp.c b/arch/ppc64/kernel/pmac_smp.c index a67e2a595c593..fb6ab40147ed1 100644 --- a/arch/ppc64/kernel/pmac_smp.c +++ b/arch/ppc64/kernel/pmac_smp.c @@ -38,7 +38,6 @@ #include #include #include -#include #include #include #include diff --git a/arch/ppc64/kernel/pmac_time.c b/arch/ppc64/kernel/pmac_time.c index aea28b9891a63..06f379855e783 100644 --- a/arch/ppc64/kernel/pmac_time.c +++ b/arch/ppc64/kernel/pmac_time.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include @@ -25,7 +26,6 @@ #include #include #include -#include #include #include diff --git a/arch/ppc64/kernel/process.c b/arch/ppc64/kernel/process.c index e1a35840c16b7..8fda55762dfd6 100644 --- a/arch/ppc64/kernel/process.c +++ b/arch/ppc64/kernel/process.c @@ -34,6 +34,7 @@ #include #include #include +#include #include #include @@ -47,7 +48,6 @@ #include #include #include -#include #include #include #include diff --git a/arch/ppc64/kernel/rtc.c b/arch/ppc64/kernel/rtc.c index 7bf41f3cab904..536a499183640 100644 --- a/arch/ppc64/kernel/rtc.c +++ b/arch/ppc64/kernel/rtc.c @@ -34,8 +34,8 @@ #include #include #include +#include -#include #include #include #include diff --git a/arch/ppc64/kernel/smp.c b/arch/ppc64/kernel/smp.c index 1d0767df6fd1f..7321d27905d5c 100644 --- a/arch/ppc64/kernel/smp.c +++ b/arch/ppc64/kernel/smp.c @@ -36,7 +36,6 @@ #include #include #include -#include #include #include #include diff --git a/arch/ppc64/kernel/viopath.c b/arch/ppc64/kernel/viopath.c index 7b6c257f42797..66a8102398fa7 100644 --- a/arch/ppc64/kernel/viopath.c +++ b/arch/ppc64/kernel/viopath.c @@ -38,8 +38,8 @@ #include #include #include +#include -#include #include #include #include diff --git a/arch/ppc64/mm/tlb.c b/arch/ppc64/mm/tlb.c index 8825e14cb35a3..aa2d76ca46f25 100644 --- a/arch/ppc64/mm/tlb.c +++ b/arch/ppc64/mm/tlb.c @@ -26,10 +26,10 @@ #include #include #include +#include #include #include #include -#include #include DEFINE_PER_CPU(struct ppc64_tlb_batch, ppc64_tlb_batch); diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c index b5d5ae7a0ada5..d6bd3d4298601 100644 --- a/arch/s390/mm/fault.c +++ b/arch/s390/mm/fault.c @@ -25,11 +25,11 @@ #include #include #include +#include #include #include #include -#include #ifndef CONFIG_ARCH_S390X #define __FAIL_ADDR_MASK 0x7ffff000 diff --git a/arch/sh/kernel/sh_ksyms.c b/arch/sh/kernel/sh_ksyms.c index 97057fc3c0304..5e5cdd7f28b6d 100644 --- a/arch/sh/kernel/sh_ksyms.c +++ b/arch/sh/kernel/sh_ksyms.c @@ -16,7 +16,6 @@ #include #include #include -#include #include #include #include diff --git a/arch/sh/kernel/smp.c b/arch/sh/kernel/smp.c index 9efe2b12fdd1e..6ff83edf8374e 100644 --- a/arch/sh/kernel/smp.c +++ b/arch/sh/kernel/smp.c @@ -26,7 +26,6 @@ #include #include #include -#include #include #include diff --git a/arch/sh/mm/fault-nommu.c b/arch/sh/mm/fault-nommu.c index e757b2c187b3d..34d4e0c68fbb1 100644 --- a/arch/sh/mm/fault-nommu.c +++ b/arch/sh/mm/fault-nommu.c @@ -26,7 +26,6 @@ #include #include #include -#include #include #include diff --git a/arch/sh/mm/fault.c b/arch/sh/mm/fault.c index 43a9e26892746..7abba2161da6c 100644 --- a/arch/sh/mm/fault.c +++ b/arch/sh/mm/fault.c @@ -26,7 +26,6 @@ #include #include #include -#include #include #include #include diff --git a/arch/sh/mm/tlb-sh3.c b/arch/sh/mm/tlb-sh3.c index 318d1a529b49b..4bffcf59cdb7e 100644 --- a/arch/sh/mm/tlb-sh3.c +++ b/arch/sh/mm/tlb-sh3.c @@ -25,7 +25,6 @@ #include #include #include -#include #include #include diff --git a/arch/sh/mm/tlb-sh4.c b/arch/sh/mm/tlb-sh4.c index 4b7a0bcdc1bcd..115b1b6be40b4 100644 --- a/arch/sh/mm/tlb-sh4.c +++ b/arch/sh/mm/tlb-sh4.c @@ -25,7 +25,6 @@ #include #include #include -#include #include #include diff --git a/arch/sh64/kernel/sh_ksyms.c b/arch/sh64/kernel/sh_ksyms.c index b16440d9145c5..36cd5de959bd7 100644 --- a/arch/sh64/kernel/sh_ksyms.c +++ b/arch/sh64/kernel/sh_ksyms.c @@ -25,7 +25,6 @@ #include #include #include -#include #include #include diff --git a/arch/sh64/mm/fault.c b/arch/sh64/mm/fault.c index b5ab4a88cdb27..d1190b4158d8a 100644 --- a/arch/sh64/mm/fault.c +++ b/arch/sh64/mm/fault.c @@ -30,7 +30,6 @@ #include #include #include -#include #include #include /* required by inline asm statements */ diff --git a/arch/sh64/mm/tlbmiss.c b/arch/sh64/mm/tlbmiss.c index a69f7751c3fd2..69f686c885f12 100644 --- a/arch/sh64/mm/tlbmiss.c +++ b/arch/sh64/mm/tlbmiss.c @@ -40,7 +40,6 @@ #include #include #include -#include #include #include /* required by inline asm statements */ diff --git a/arch/sparc/kernel/irq.c b/arch/sparc/kernel/irq.c index cfabf35ee0e01..4e0ed320d2258 100644 --- a/arch/sparc/kernel/irq.c +++ b/arch/sparc/kernel/irq.c @@ -45,7 +45,6 @@ #include #include #include -#include #include #include diff --git a/arch/sparc/kernel/setup.c b/arch/sparc/kernel/setup.c index 7bc43b4c0895b..55352ed85e8af 100644 --- a/arch/sparc/kernel/setup.c +++ b/arch/sparc/kernel/setup.c @@ -44,7 +44,6 @@ #include #include #include -#include #include #include #include diff --git a/arch/sparc/kernel/smp.c b/arch/sparc/kernel/smp.c index 46591a15eb43b..f11dd14dbe3b1 100644 --- a/arch/sparc/kernel/smp.c +++ b/arch/sparc/kernel/smp.c @@ -30,7 +30,6 @@ #include #include #include -#include #include #include #include diff --git a/arch/sparc/kernel/sparc_ksyms.c b/arch/sparc/kernel/sparc_ksyms.c index 8c6341bae3669..7282bc3ee014e 100644 --- a/arch/sparc/kernel/sparc_ksyms.c +++ b/arch/sparc/kernel/sparc_ksyms.c @@ -41,7 +41,6 @@ #include #include #include -#include #include #include #include diff --git a/arch/sparc/kernel/sun4d_smp.c b/arch/sparc/kernel/sun4d_smp.c index 739fb6f3cae43..1de4c8a39bf01 100644 --- a/arch/sparc/kernel/sun4d_smp.c +++ b/arch/sparc/kernel/sun4d_smp.c @@ -30,7 +30,6 @@ #include #include #include -#include #include #include #include diff --git a/arch/sparc/kernel/sun4m_smp.c b/arch/sparc/kernel/sun4m_smp.c index f36f1bef56b03..100433e05d944 100644 --- a/arch/sparc/kernel/sun4m_smp.c +++ b/arch/sparc/kernel/sun4m_smp.c @@ -29,7 +29,6 @@ #include #include #include -#include #include #define IRQ_RESCHEDULE 13 diff --git a/arch/sparc64/kernel/irq.c b/arch/sparc64/kernel/irq.c index fdb848178a86a..3162b2ed1e426 100644 --- a/arch/sparc64/kernel/irq.c +++ b/arch/sparc64/kernel/irq.c @@ -33,7 +33,6 @@ #include #include #include -#include #include #include #include diff --git a/arch/sparc64/kernel/setup.c b/arch/sparc64/kernel/setup.c index 438e373cec3c5..51e762bcd1dc8 100644 --- a/arch/sparc64/kernel/setup.c +++ b/arch/sparc64/kernel/setup.c @@ -43,7 +43,6 @@ #include #include #include -#include #include #include #include diff --git a/arch/sparc64/kernel/smp.c b/arch/sparc64/kernel/smp.c index b1abd017755b4..f2bbaafd8d57a 100644 --- a/arch/sparc64/kernel/smp.c +++ b/arch/sparc64/kernel/smp.c @@ -32,7 +32,6 @@ #include #include #include -#include #include #include #include diff --git a/arch/sparc64/kernel/sparc64_ksyms.c b/arch/sparc64/kernel/sparc64_ksyms.c index d641c541f9c77..3864b4b6e8e57 100644 --- a/arch/sparc64/kernel/sparc64_ksyms.c +++ b/arch/sparc64/kernel/sparc64_ksyms.c @@ -34,7 +34,6 @@ #include #include #include -#include #include #include #include diff --git a/arch/um/drivers/stdio_console.c b/arch/um/drivers/stdio_console.c index 5fdc50db6f0a9..d5df64e7b2113 100644 --- a/arch/um/drivers/stdio_console.c +++ b/arch/um/drivers/stdio_console.c @@ -17,8 +17,8 @@ #include "linux/init.h" #include "linux/interrupt.h" #include "linux/slab.h" +#include "linux/hardirq.h" #include "asm/current.h" -#include "asm/hardirq.h" #include "asm/irq.h" #include "stdio_console.h" #include "line.h" diff --git a/arch/um/kernel/irq.c b/arch/um/kernel/irq.c index 8acbf137da550..5e55c3ae0c8ff 100644 --- a/arch/um/kernel/irq.c +++ b/arch/um/kernel/irq.c @@ -19,9 +19,9 @@ #include "linux/init.h" #include "linux/seq_file.h" #include "linux/profile.h" +#include "linux/hardirq.h" #include "asm/irq.h" #include "asm/hw_irq.h" -#include "asm/hardirq.h" #include "asm/atomic.h" #include "asm/signal.h" #include "asm/system.h" diff --git a/arch/um/kernel/smp.c b/arch/um/kernel/smp.c index 8e970e0f06083..ace88c2393c61 100644 --- a/arch/um/kernel/smp.c +++ b/arch/um/kernel/smp.c @@ -18,10 +18,10 @@ DEFINE_PER_CPU(struct mmu_gather, mmu_gathers); #include "linux/threads.h" #include "linux/interrupt.h" #include "linux/err.h" +#include "linux/hardirq.h" #include "asm/smp.h" #include "asm/processor.h" #include "asm/spinlock.h" -#include "asm/hardirq.h" #include "user_util.h" #include "kern_util.h" #include "kern.h" diff --git a/arch/v850/kernel/asm-consts.c b/arch/v850/kernel/asm-consts.c index 666930d9cea65..24f291369070d 100644 --- a/arch/v850/kernel/asm-consts.c +++ b/arch/v850/kernel/asm-consts.c @@ -12,8 +12,8 @@ #include #include #include +#include #include -#include #include #define DEFINE(sym, val) \ diff --git a/arch/v850/kernel/v850_ksyms.c b/arch/v850/kernel/v850_ksyms.c index 25170c4a8a047..0ca64900dd913 100644 --- a/arch/v850/kernel/v850_ksyms.c +++ b/arch/v850/kernel/v850_ksyms.c @@ -14,7 +14,6 @@ #include #include #include -#include #include diff --git a/arch/x86_64/kernel/asm-offsets.c b/arch/x86_64/kernel/asm-offsets.c index 757f55078a7cd..37d12fa5ef7fc 100644 --- a/arch/x86_64/kernel/asm-offsets.c +++ b/arch/x86_64/kernel/asm-offsets.c @@ -7,8 +7,8 @@ #include #include #include +#include #include -#include #include #include #include diff --git a/arch/x86_64/kernel/x8664_ksyms.c b/arch/x86_64/kernel/x8664_ksyms.c index f64ea3d60de6e..6e3acce421bed 100644 --- a/arch/x86_64/kernel/x8664_ksyms.c +++ b/arch/x86_64/kernel/x8664_ksyms.c @@ -21,7 +21,6 @@ #include #include #include -#include #include #include #include diff --git a/arch/x86_64/mm/fault.c b/arch/x86_64/mm/fault.c index 1fa1f48aac405..71722bd6abb6e 100644 --- a/arch/x86_64/mm/fault.c +++ b/arch/x86_64/mm/fault.c @@ -27,7 +27,6 @@ #include #include #include -#include #include #include #include diff --git a/crypto/internal.h b/crypto/internal.h index b51fad1f9ff52..e68e43886d3cc 100644 --- a/crypto/internal.h +++ b/crypto/internal.h @@ -17,7 +17,6 @@ #include #include #include -#include #include extern enum km_type crypto_km_types[]; diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c index a57ba84eb2c6a..9317f3f3191c0 100644 --- a/drivers/base/firmware_class.c +++ b/drivers/base/firmware_class.c @@ -12,7 +12,7 @@ #include #include #include -#include +#include #include #include diff --git a/drivers/char/rio/linux_compat.h b/drivers/char/rio/linux_compat.h index 26063cb6a007d..d53843abe02d7 100644 --- a/drivers/char/rio/linux_compat.h +++ b/drivers/char/rio/linux_compat.h @@ -16,7 +16,7 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#include +#include #define disable(oldspl) save_flags (oldspl) diff --git a/drivers/macintosh/via-pmu.c b/drivers/macintosh/via-pmu.c index f20842c5e0141..1babc0f87bc2b 100644 --- a/drivers/macintosh/via-pmu.c +++ b/drivers/macintosh/via-pmu.c @@ -52,7 +52,6 @@ #include #include #include -#include #include #include #include diff --git a/drivers/s390/cio/cio.c b/drivers/s390/cio/cio.c index 38e59dd243326..f27b1649d0242 100644 --- a/drivers/s390/cio/cio.c +++ b/drivers/s390/cio/cio.c @@ -17,8 +17,8 @@ #include #include #include +#include -#include #include #include #include diff --git a/include/asm-alpha/hardirq.h b/include/asm-alpha/hardirq.h index e188ed9cf8707..10be402fcb26d 100644 --- a/include/asm-alpha/hardirq.h +++ b/include/asm-alpha/hardirq.h @@ -39,20 +39,6 @@ typedef struct { #define SOFTIRQ_SHIFT (PREEMPT_SHIFT + PREEMPT_BITS) #define HARDIRQ_SHIFT (SOFTIRQ_SHIFT + SOFTIRQ_BITS) -#define __MASK(x) ((1UL << (x))-1) - -#define PREEMPT_MASK (__MASK(PREEMPT_BITS) << PREEMPT_SHIFT) -#define HARDIRQ_MASK (__MASK(HARDIRQ_BITS) << HARDIRQ_SHIFT) -#define SOFTIRQ_MASK (__MASK(SOFTIRQ_BITS) << SOFTIRQ_SHIFT) - -#define hardirq_count() (preempt_count() & HARDIRQ_MASK) -#define softirq_count() (preempt_count() & SOFTIRQ_MASK) -#define irq_count() (preempt_count() & (HARDIRQ_MASK | SOFTIRQ_MASK)) - -#define PREEMPT_OFFSET (1UL << PREEMPT_SHIFT) -#define SOFTIRQ_OFFSET (1UL << SOFTIRQ_SHIFT) -#define HARDIRQ_OFFSET (1UL << HARDIRQ_SHIFT) - /* * The hardirq mask has to be large enough to have * space for potentially nestable IRQ sources in the system @@ -64,28 +50,7 @@ typedef struct { #error HARDIRQ_BITS is too low! #endif -/* - * Are we doing bottom half or hardware interrupt processing? - * Are we in a softirq context? Interrupt context? - */ -#define in_irq() (hardirq_count()) -#define in_softirq() (softirq_count()) -#define in_interrupt() (irq_count()) - - -#define hardirq_trylock() (!in_interrupt()) -#define hardirq_endlock() do { } while (0) - #define irq_enter() (preempt_count() += HARDIRQ_OFFSET) - - -#ifdef CONFIG_PREEMPT -#define in_atomic() (preempt_count() != kernel_locked()) -# define IRQ_EXIT_OFFSET (HARDIRQ_OFFSET-1) -#else -#define in_atomic() (preempt_count() != 0) -#define IRQ_EXIT_OFFSET HARDIRQ_OFFSET -# endif #define irq_exit() \ do { \ preempt_count() -= IRQ_EXIT_OFFSET; \ @@ -95,10 +60,4 @@ do { \ preempt_enable_no_resched(); \ } while (0) -#ifndef CONFIG_SMP -# define synchronize_irq(irq) barrier() -#else - extern void synchronize_irq(unsigned int irq); -#endif /* CONFIG_SMP */ - #endif /* _ALPHA_HARDIRQ_H */ diff --git a/include/asm-arm/hardirq.h b/include/asm-arm/hardirq.h index f5b478f16a526..3f734c4de7f04 100644 --- a/include/asm-arm/hardirq.h +++ b/include/asm-arm/hardirq.h @@ -41,20 +41,6 @@ typedef struct { #define SOFTIRQ_SHIFT (PREEMPT_SHIFT + PREEMPT_BITS) #define HARDIRQ_SHIFT (SOFTIRQ_SHIFT + SOFTIRQ_BITS) -#define __MASK(x) ((1UL << (x))-1) - -#define PREEMPT_MASK (__MASK(PREEMPT_BITS) << PREEMPT_SHIFT) -#define HARDIRQ_MASK (__MASK(HARDIRQ_BITS) << HARDIRQ_SHIFT) -#define SOFTIRQ_MASK (__MASK(SOFTIRQ_BITS) << SOFTIRQ_SHIFT) - -#define hardirq_count() (preempt_count() & HARDIRQ_MASK) -#define softirq_count() (preempt_count() & SOFTIRQ_MASK) -#define irq_count() (preempt_count() & (HARDIRQ_MASK|SOFTIRQ_MASK)) - -#define PREEMPT_OFFSET (1UL << PREEMPT_SHIFT) -#define SOFTIRQ_OFFSET (1UL << SOFTIRQ_SHIFT) -#define HARDIRQ_OFFSET (1UL << HARDIRQ_SHIFT) - /* * The hardirq mask has to be large enough to have space * for potentially all IRQ sources in the system nesting @@ -64,29 +50,9 @@ typedef struct { # error HARDIRQ_BITS is too low! #endif -/* - * Are we doing bottom half or hardware interrupt processing? - * Are we in a softirq context? Interrupt context? - */ -#define in_irq() (hardirq_count()) -#define in_softirq() (softirq_count()) -#define in_interrupt() (irq_count()) - -#define hardirq_trylock() (!in_interrupt()) -#define hardirq_endlock() do { } while (0) - #define irq_enter() (preempt_count() += HARDIRQ_OFFSET) -#ifdef CONFIG_PREEMPT -# define in_atomic() ((preempt_count() & ~PREEMPT_ACTIVE) != kernel_locked()) -# define IRQ_EXIT_OFFSET (HARDIRQ_OFFSET-1) -#else -# define in_atomic() (preempt_count() != 0) -# define IRQ_EXIT_OFFSET HARDIRQ_OFFSET -#endif - #ifndef CONFIG_SMP - extern asmlinkage void __do_softirq(void); #define irq_exit() \ @@ -96,10 +62,6 @@ extern asmlinkage void __do_softirq(void); __do_softirq(); \ preempt_enable_no_resched(); \ } while (0) - -#define synchronize_irq(irq) barrier() -#else -extern void synchronize_irq(unsigned int irq); #endif #endif /* __ASM_HARDIRQ_H */ diff --git a/include/asm-arm26/hardirq.h b/include/asm-arm26/hardirq.h index 623b5f8fbb315..52feb957f3e70 100644 --- a/include/asm-arm26/hardirq.h +++ b/include/asm-arm26/hardirq.h @@ -32,20 +32,6 @@ typedef struct { #define SOFTIRQ_SHIFT (PREEMPT_SHIFT + PREEMPT_BITS) #define HARDIRQ_SHIFT (SOFTIRQ_SHIFT + SOFTIRQ_BITS) -#define __MASK(x) ((1UL << (x))-1) - -#define PREEMPT_MASK (__MASK(PREEMPT_BITS) << PREEMPT_SHIFT) -#define HARDIRQ_MASK (__MASK(HARDIRQ_BITS) << HARDIRQ_SHIFT) -#define SOFTIRQ_MASK (__MASK(SOFTIRQ_BITS) << SOFTIRQ_SHIFT) - -#define hardirq_count() (preempt_count() & HARDIRQ_MASK) -#define softirq_count() (preempt_count() & SOFTIRQ_MASK) -#define irq_count() (preempt_count() & (HARDIRQ_MASK|SOFTIRQ_MASK)) - -#define PREEMPT_OFFSET (1UL << PREEMPT_SHIFT) -#define SOFTIRQ_OFFSET (1UL << SOFTIRQ_SHIFT) -#define HARDIRQ_OFFSET (1UL << HARDIRQ_SHIFT) - /* * The hardirq mask has to be large enough to have space * for potentially all IRQ sources in the system nesting @@ -55,26 +41,8 @@ typedef struct { # error HARDIRQ_BITS is too low! #endif -/* - * Are we doing bottom half or hardware interrupt processing? - * Are we in a softirq context? Interrupt context? - */ -#define in_irq() (hardirq_count()) -#define in_softirq() (softirq_count()) -#define in_interrupt() (irq_count()) - -#define hardirq_trylock() (!in_interrupt()) -#define hardirq_endlock() do { } while (0) - #define irq_enter() (preempt_count() += HARDIRQ_OFFSET) -#ifdef CONFIG_PREEMPT -# define in_atomic() ((preempt_count() & ~PREEMPT_ACTIVE) != kernel_locked())# define IRQ_EXIT_OFFSET (HARDIRQ_OFFSET-1) -#else -# define in_atomic() (preempt_count() != 0) -# define IRQ_EXIT_OFFSET HARDIRQ_OFFSET -#endif - #ifndef CONFIG_SMP #define irq_exit() \ do { \ @@ -84,9 +52,6 @@ typedef struct { preempt_enable_no_resched(); \ } while (0) -#define synchronize_irq(irq) barrier() -#else -#error SMP not supported #endif #endif /* __ASM_HARDIRQ_H */ diff --git a/include/asm-cris/hardirq.h b/include/asm-cris/hardirq.h index c75100f8359b4..4e28c83324adf 100644 --- a/include/asm-cris/hardirq.h +++ b/include/asm-cris/hardirq.h @@ -40,20 +40,6 @@ typedef struct { #define SOFTIRQ_SHIFT (PREEMPT_SHIFT + PREEMPT_BITS) #define HARDIRQ_SHIFT (SOFTIRQ_SHIFT + SOFTIRQ_BITS) -#define __MASK(x) ((1UL << (x))-1) - -#define PREEMPT_MASK (__MASK(PREEMPT_BITS) << PREEMPT_SHIFT) -#define HARDIRQ_MASK (__MASK(HARDIRQ_BITS) << HARDIRQ_SHIFT) -#define SOFTIRQ_MASK (__MASK(SOFTIRQ_BITS) << SOFTIRQ_SHIFT) - -#define hardirq_count() (preempt_count() & HARDIRQ_MASK) -#define softirq_count() (preempt_count() & SOFTIRQ_MASK) -#define irq_count() (preempt_count() & (HARDIRQ_MASK | SOFTIRQ_MASK)) - -#define PREEMPT_OFFSET (1UL << PREEMPT_SHIFT) -#define SOFTIRQ_OFFSET (1UL << SOFTIRQ_SHIFT) -#define HARDIRQ_OFFSET (1UL << HARDIRQ_SHIFT) - /* * The hardirq mask has to be large enough to have * space for potentially all IRQ sources in the system @@ -63,27 +49,7 @@ typedef struct { # error HARDIRQ_BITS is too low! #endif -/* - * Are we doing bottom half or hardware interrupt processing? - * Are we in a softirq context? Interrupt context? - */ -#define in_irq() (hardirq_count()) -#define in_softirq() (softirq_count()) -#define in_interrupt() (irq_count()) - - -#define hardirq_trylock() (!in_interrupt()) -#define hardirq_endlock() do { } while (0) - #define irq_enter() (preempt_count() += HARDIRQ_OFFSET) - -#ifdef CONFIG_PREEMPT -# define in_atomic() ((preempt_count() & ~PREEMPT_ACTIVE) != kernel_locked()) -# define IRQ_EXIT_OFFSET (HARDIRQ_OFFSET-1) -#else -# define in_atomic() (preempt_count() != 0) -# define IRQ_EXIT_OFFSET HARDIRQ_OFFSET -#endif #define irq_exit() \ do { \ preempt_count() -= IRQ_EXIT_OFFSET; \ @@ -92,6 +58,4 @@ do { \ preempt_enable_no_resched(); \ } while (0) -#define synchronize_irq(irq) barrier() - #endif /* __ASM_HARDIRQ_H */ diff --git a/include/asm-generic/local.h b/include/asm-generic/local.h index c814b2f840ba6..16fc00360f758 100644 --- a/include/asm-generic/local.h +++ b/include/asm-generic/local.h @@ -3,8 +3,8 @@ #include #include +#include #include -#include /* An unsigned long type for operations which are atomic for a single * CPU. Usually used in combination with per-cpu variables. */ diff --git a/include/asm-h8300/hardirq.h b/include/asm-h8300/hardirq.h index c0941a080bdd2..c878cc44b6cb4 100644 --- a/include/asm-h8300/hardirq.h +++ b/include/asm-h8300/hardirq.h @@ -38,20 +38,6 @@ typedef struct { #define SOFTIRQ_SHIFT (PREEMPT_SHIFT + PREEMPT_BITS) #define HARDIRQ_SHIFT (SOFTIRQ_SHIFT + SOFTIRQ_BITS) -#define __MASK(x) ((1UL << (x))-1) - -#define PREEMPT_MASK (__MASK(PREEMPT_BITS) << PREEMPT_SHIFT) -#define HARDIRQ_MASK (__MASK(HARDIRQ_BITS) << HARDIRQ_SHIFT) -#define SOFTIRQ_MASK (__MASK(SOFTIRQ_BITS) << SOFTIRQ_SHIFT) - -#define hardirq_count() (preempt_count() & HARDIRQ_MASK) -#define softirq_count() (preempt_count() & SOFTIRQ_MASK) -#define irq_count() (preempt_count() & (HARDIRQ_MASK | SOFTIRQ_MASK)) - -#define PREEMPT_OFFSET (1UL << PREEMPT_SHIFT) -#define SOFTIRQ_OFFSET (1UL << SOFTIRQ_SHIFT) -#define HARDIRQ_OFFSET (1UL << HARDIRQ_SHIFT) - /* * The hardirq mask has to be large enough to have * space for potentially all IRQ sources in the system @@ -61,27 +47,7 @@ typedef struct { # error HARDIRQ_BITS is too low! #endif -/* - * Are we doing bottom half or hardware interrupt processing? - * Are we in a softirq context? Interrupt context? - */ -#define in_irq() (hardirq_count()) -#define in_softirq() (softirq_count()) -#define in_interrupt() (irq_count()) - -#define hardirq_trylock() (!in_interrupt()) -#define hardirq_endlock() do { } while (0) - #define irq_enter() (preempt_count() += HARDIRQ_OFFSET) - -#ifdef CONFIG_PREEMPT -# define in_atomic() ((preempt_count() & ~PREEMPT_ACTIVE) != kernel_locked()) -# define IRQ_EXIT_OFFSET (HARDIRQ_OFFSET-1) -#else -# define in_atomic() (preempt_count() != 0) -# define IRQ_EXIT_OFFSET HARDIRQ_OFFSET -#endif - #define irq_exit() \ do { \ preempt_count() -= IRQ_EXIT_OFFSET; \ @@ -90,10 +56,4 @@ do { \ preempt_enable_no_resched(); \ } while (0) -#ifndef CONFIG_SMP -# define synchronize_irq(irq) barrier() -#else -# error h8300 SMP is not available -#endif /* CONFIG_SMP */ - #endif diff --git a/include/asm-i386/hardirq.h b/include/asm-i386/hardirq.h index 52fe4d9930852..8f5a07555667f 100644 --- a/include/asm-i386/hardirq.h +++ b/include/asm-i386/hardirq.h @@ -37,20 +37,6 @@ typedef struct { #define SOFTIRQ_SHIFT (PREEMPT_SHIFT + PREEMPT_BITS) #define HARDIRQ_SHIFT (SOFTIRQ_SHIFT + SOFTIRQ_BITS) -#define __MASK(x) ((1UL << (x))-1) - -#define PREEMPT_MASK (__MASK(PREEMPT_BITS) << PREEMPT_SHIFT) -#define HARDIRQ_MASK (__MASK(HARDIRQ_BITS) << HARDIRQ_SHIFT) -#define SOFTIRQ_MASK (__MASK(SOFTIRQ_BITS) << SOFTIRQ_SHIFT) - -#define hardirq_count() (preempt_count() & HARDIRQ_MASK) -#define softirq_count() (preempt_count() & SOFTIRQ_MASK) -#define irq_count() (preempt_count() & (HARDIRQ_MASK | SOFTIRQ_MASK)) - -#define PREEMPT_OFFSET (1UL << PREEMPT_SHIFT) -#define SOFTIRQ_OFFSET (1UL << SOFTIRQ_SHIFT) -#define HARDIRQ_OFFSET (1UL << HARDIRQ_SHIFT) - /* * The hardirq mask has to be large enough to have * space for potentially all IRQ sources in the system @@ -60,30 +46,10 @@ typedef struct { # error HARDIRQ_BITS is too low! #endif -/* - * Are we doing bottom half or hardware interrupt processing? - * Are we in a softirq context? Interrupt context? - */ -#define in_irq() (hardirq_count()) -#define in_softirq() (softirq_count()) -#define in_interrupt() (irq_count()) - - -#define hardirq_trylock() (!in_interrupt()) -#define hardirq_endlock() do { } while (0) - -#define irq_enter() (preempt_count() += HARDIRQ_OFFSET) #define nmi_enter() (irq_enter()) #define nmi_exit() (preempt_count() -= HARDIRQ_OFFSET) -#ifdef CONFIG_PREEMPT -# include -# define in_atomic() ((preempt_count() & ~PREEMPT_ACTIVE) != kernel_locked()) -# define IRQ_EXIT_OFFSET (HARDIRQ_OFFSET-1) -#else -# define in_atomic() (preempt_count() != 0) -# define IRQ_EXIT_OFFSET HARDIRQ_OFFSET -#endif +#define irq_enter() (preempt_count() += HARDIRQ_OFFSET) #define irq_exit() \ do { \ preempt_count() -= IRQ_EXIT_OFFSET; \ @@ -92,10 +58,4 @@ do { \ preempt_enable_no_resched(); \ } while (0) -#ifndef CONFIG_SMP -# define synchronize_irq(irq) barrier() -#else - extern void synchronize_irq(unsigned int irq); -#endif /* CONFIG_SMP */ - #endif /* __ASM_HARDIRQ_H */ diff --git a/include/asm-ia64/hardirq.h b/include/asm-ia64/hardirq.h index ec603240e3fed..f3ffa6340c4ba 100644 --- a/include/asm-ia64/hardirq.h +++ b/include/asm-ia64/hardirq.h @@ -52,20 +52,6 @@ #define SOFTIRQ_SHIFT (PREEMPT_SHIFT + PREEMPT_BITS) #define HARDIRQ_SHIFT (SOFTIRQ_SHIFT + SOFTIRQ_BITS) -#define __MASK(x) ((1UL << (x))-1) - -#define PREEMPT_MASK (__MASK(PREEMPT_BITS) << PREEMPT_SHIFT) -#define HARDIRQ_MASK (__MASK(HARDIRQ_BITS) << HARDIRQ_SHIFT) -#define SOFTIRQ_MASK (__MASK(SOFTIRQ_BITS) << SOFTIRQ_SHIFT) - -#define hardirq_count() (preempt_count() & HARDIRQ_MASK) -#define softirq_count() (preempt_count() & SOFTIRQ_MASK) -#define irq_count() (preempt_count() & (HARDIRQ_MASK | SOFTIRQ_MASK)) - -#define PREEMPT_OFFSET (1UL << PREEMPT_SHIFT) -#define SOFTIRQ_OFFSET (1UL << SOFTIRQ_SHIFT) -#define HARDIRQ_OFFSET (1UL << HARDIRQ_SHIFT) - /* * The hardirq mask has to be large enough to have space for potentially all IRQ sources * in the system nesting on a single CPU: @@ -74,31 +60,4 @@ # error HARDIRQ_BITS is too low! #endif -/* - * Are we doing bottom half or hardware interrupt processing? - * Are we in a softirq context? - * Interrupt context? - */ -#define in_irq() (hardirq_count()) -#define in_softirq() (softirq_count()) -#define in_interrupt() (irq_count()) - -#define hardirq_trylock() (!in_interrupt()) -#define hardirq_endlock() do { } while (0) - -#ifdef CONFIG_PREEMPT -# include -# define in_atomic() ((preempt_count() & ~PREEMPT_ACTIVE) != kernel_locked()) -# define IRQ_EXIT_OFFSET (HARDIRQ_OFFSET-1) -#else -# define in_atomic() (preempt_count() != 0) -# define IRQ_EXIT_OFFSET HARDIRQ_OFFSET -#endif - -#ifdef CONFIG_SMP - extern void synchronize_irq (unsigned int irq); -#else -# define synchronize_irq(irq) barrier() -#endif /* CONFIG_SMP */ - #endif /* _ASM_IA64_HARDIRQ_H */ diff --git a/include/asm-m68k/hardirq.h b/include/asm-m68k/hardirq.h index 80c86ec3ba74b..c74ad7709210a 100644 --- a/include/asm-m68k/hardirq.h +++ b/include/asm-m68k/hardirq.h @@ -35,20 +35,6 @@ typedef struct { #define SOFTIRQ_SHIFT (PREEMPT_SHIFT + PREEMPT_BITS) #define HARDIRQ_SHIFT (SOFTIRQ_SHIFT + SOFTIRQ_BITS) -#define __MASK(x) ((1UL << (x))-1) - -#define PREEMPT_MASK (__MASK(PREEMPT_BITS) << PREEMPT_SHIFT) -#define HARDIRQ_MASK (__MASK(HARDIRQ_BITS) << HARDIRQ_SHIFT) -#define SOFTIRQ_MASK (__MASK(SOFTIRQ_BITS) << SOFTIRQ_SHIFT) - -#define hardirq_count() (preempt_count() & HARDIRQ_MASK) -#define softirq_count() (preempt_count() & SOFTIRQ_MASK) -#define irq_count() (preempt_count() & (HARDIRQ_MASK | SOFTIRQ_MASK)) - -#define PREEMPT_OFFSET (1UL << PREEMPT_SHIFT) -#define SOFTIRQ_OFFSET (1UL << SOFTIRQ_SHIFT) -#define HARDIRQ_OFFSET (1UL << HARDIRQ_SHIFT) - /* * The hardirq mask has to be large enough to have * space for potentially all IRQ sources in the system @@ -58,27 +44,7 @@ typedef struct { # error HARDIRQ_BITS is too low! #endif -/* - * Are we doing bottom half or hardware interrupt processing? - * Are we in a softirq context? Interrupt context? - */ -#define in_irq() (hardirq_count()) -#define in_softirq() (softirq_count()) -#define in_interrupt() (irq_count()) - - -#define hardirq_trylock() (!in_interrupt()) -#define hardirq_endlock() do { } while (0) - #define irq_enter() (preempt_count() += HARDIRQ_OFFSET) - -#ifdef CONFIG_PREEMPT -# define in_atomic() (preempt_count() != kernel_locked()) -# define IRQ_EXIT_OFFSET (HARDIRQ_OFFSET-1) -#else -# define in_atomic() (preempt_count() != 0) -# define IRQ_EXIT_OFFSET HARDIRQ_OFFSET -#endif #define irq_exit() \ do { \ preempt_count() -= IRQ_EXIT_OFFSET; \ @@ -87,6 +53,4 @@ do { \ preempt_enable_no_resched(); \ } while (0) -#define synchronize_irq(irq) barrier() - #endif diff --git a/include/asm-m68k/system.h b/include/asm-m68k/system.h index 5a9c74c09e50c..f0f36fca11bb7 100644 --- a/include/asm-m68k/system.h +++ b/include/asm-m68k/system.h @@ -51,7 +51,7 @@ asmlinkage void resume(void); #if 0 #define local_irq_enable() asm volatile ("andiw %0,%%sr": : "i" (ALLOWINT) : "memory") #else -#include +#include #define local_irq_enable() ({ \ if (MACH_IS_Q40 || !hardirq_count()) \ asm volatile ("andiw %0,%%sr": : "i" (ALLOWINT) : "memory"); \ diff --git a/include/asm-m68knommu/hardirq.h b/include/asm-m68knommu/hardirq.h index f8dbdf2de0e7d..840eac2812ae2 100644 --- a/include/asm-m68knommu/hardirq.h +++ b/include/asm-m68knommu/hardirq.h @@ -36,20 +36,6 @@ typedef struct { #define SOFTIRQ_SHIFT (PREEMPT_SHIFT + PREEMPT_BITS) #define HARDIRQ_SHIFT (SOFTIRQ_SHIFT + SOFTIRQ_BITS) -#define __MASK(x) ((1UL << (x))-1) - -#define PREEMPT_MASK (__MASK(PREEMPT_BITS) << PREEMPT_SHIFT) -#define HARDIRQ_MASK (__MASK(HARDIRQ_BITS) << HARDIRQ_SHIFT) -#define SOFTIRQ_MASK (__MASK(SOFTIRQ_BITS) << SOFTIRQ_SHIFT) - -#define hardirq_count() (preempt_count() & HARDIRQ_MASK) -#define softirq_count() (preempt_count() & SOFTIRQ_MASK) -#define irq_count() (preempt_count() & (HARDIRQ_MASK | SOFTIRQ_MASK)) - -#define PREEMPT_OFFSET (1UL << PREEMPT_SHIFT) -#define SOFTIRQ_OFFSET (1UL << SOFTIRQ_SHIFT) -#define HARDIRQ_OFFSET (1UL << HARDIRQ_SHIFT) - /* * The hardirq mask has to be large enough to have * space for potentially all IRQ sources in the system @@ -59,33 +45,7 @@ typedef struct { # error HARDIRQ_BITS is too low! #endif -/* - * Are we doing bottom half or hardware interrupt processing? - * Are we in a softirq context? Interrupt context? - */ -#define in_irq() (hardirq_count()) -#define in_softirq() (softirq_count()) -#define in_interrupt() (irq_count()) - -#define hardirq_trylock() (!in_interrupt()) -#define hardirq_endlock() do { } while (0) - #define irq_enter() (preempt_count() += HARDIRQ_OFFSET) - -#ifdef CONFIG_PREEMPT -# define IRQ_EXIT_OFFSET (HARDIRQ_OFFSET-1) -#else -# define IRQ_EXIT_OFFSET HARDIRQ_OFFSET -#endif - -#ifdef CONFIG_PREEMPT -# define in_atomic() (preempt_count() != kernel_locked()) -# define IRQ_EXIT_OFFSET (HARDIRQ_OFFSET-1) -#else -# define in_atomic() (preempt_count() != 0) -# define IRQ_EXIT_OFFSET HARDIRQ_OFFSET -#endif - #define irq_exit() \ do { \ preempt_count() -= IRQ_EXIT_OFFSET; \ @@ -94,10 +54,4 @@ do { \ preempt_enable_no_resched(); \ } while (0) -#ifndef CONFIG_SMP -# define synchronize_irq(irq) barrier() -#else -# error m68knommu SMP is not available -#endif /* CONFIG_SMP */ - #endif /* __M68K_HARDIRQ_H */ diff --git a/include/asm-mips/hardirq.h b/include/asm-mips/hardirq.h index a045970ebd9e1..7562703b44e2a 100644 --- a/include/asm-mips/hardirq.h +++ b/include/asm-mips/hardirq.h @@ -43,20 +43,6 @@ typedef struct { #define SOFTIRQ_SHIFT (PREEMPT_SHIFT + PREEMPT_BITS) #define HARDIRQ_SHIFT (SOFTIRQ_SHIFT + SOFTIRQ_BITS) -#define __MASK(x) ((1UL << (x))-1) - -#define PREEMPT_MASK (__MASK(PREEMPT_BITS) << PREEMPT_SHIFT) -#define HARDIRQ_MASK (__MASK(HARDIRQ_BITS) << HARDIRQ_SHIFT) -#define SOFTIRQ_MASK (__MASK(SOFTIRQ_BITS) << SOFTIRQ_SHIFT) - -#define hardirq_count() (preempt_count() & HARDIRQ_MASK) -#define softirq_count() (preempt_count() & SOFTIRQ_MASK) -#define irq_count() (preempt_count() & (HARDIRQ_MASK | SOFTIRQ_MASK)) - -#define PREEMPT_OFFSET (1UL << PREEMPT_SHIFT) -#define SOFTIRQ_OFFSET (1UL << SOFTIRQ_SHIFT) -#define HARDIRQ_OFFSET (1UL << HARDIRQ_SHIFT) - /* * The hardirq mask has to be large enough to have * space for potentially all IRQ sources in the system @@ -66,27 +52,7 @@ typedef struct { # error HARDIRQ_BITS is too low! #endif -/* - * Are we doing bottom half or hardware interrupt processing? - * Are we in a softirq context? Interrupt context? - */ -#define in_irq() (hardirq_count()) -#define in_softirq() (softirq_count()) -#define in_interrupt() (irq_count()) - -#define hardirq_trylock() (!in_interrupt()) -#define hardirq_endlock() do { } while (0) - #define irq_enter() (preempt_count() += HARDIRQ_OFFSET) - -#ifdef CONFIG_PREEMPT -# include -# define in_atomic() ((preempt_count() & ~PREEMPT_ACTIVE) != kernel_locked()) -# define IRQ_EXIT_OFFSET (HARDIRQ_OFFSET-1) -#else -# define in_atomic() (preempt_count() != 0) -# define IRQ_EXIT_OFFSET HARDIRQ_OFFSET -#endif #define irq_exit() \ do { \ preempt_count() -= IRQ_EXIT_OFFSET; \ @@ -95,10 +61,4 @@ do { \ preempt_enable_no_resched(); \ } while (0) -#ifndef CONFIG_SMP -# define synchronize_irq(irq) barrier() -#else - extern void synchronize_irq(unsigned int irq); -#endif /* CONFIG_SMP */ - #endif /* _ASM_HARDIRQ_H */ diff --git a/include/asm-parisc/hardirq.h b/include/asm-parisc/hardirq.h index dc9b4b73886bb..7ebdebbe539ef 100644 --- a/include/asm-parisc/hardirq.h +++ b/include/asm-parisc/hardirq.h @@ -51,20 +51,6 @@ typedef struct { #define SOFTIRQ_SHIFT (PREEMPT_SHIFT + PREEMPT_BITS) #define HARDIRQ_SHIFT (SOFTIRQ_SHIFT + SOFTIRQ_BITS) -#define __MASK(x) ((1UL << (x))-1) - -#define PREEMPT_MASK (__MASK(PREEMPT_BITS) << PREEMPT_SHIFT) -#define HARDIRQ_MASK (__MASK(HARDIRQ_BITS) << HARDIRQ_SHIFT) -#define SOFTIRQ_MASK (__MASK(SOFTIRQ_BITS) << SOFTIRQ_SHIFT) - -#define hardirq_count() (preempt_count() & HARDIRQ_MASK) -#define softirq_count() (preempt_count() & SOFTIRQ_MASK) -#define irq_count() (preempt_count() & (HARDIRQ_MASK | SOFTIRQ_MASK)) - -#define PREEMPT_OFFSET (1UL << PREEMPT_SHIFT) -#define SOFTIRQ_OFFSET (1UL << SOFTIRQ_SHIFT) -#define HARDIRQ_OFFSET (1UL << HARDIRQ_SHIFT) - /* * The hardirq mask has to be large enough to have space for potentially all IRQ sources * in the system nesting on a single CPU: @@ -73,29 +59,7 @@ typedef struct { # error HARDIRQ_BITS is too low! #endif -/* - * Are we doing bottom half or hardware interrupt processing? - * Are we in a softirq context? - * Interrupt context? - */ -#define in_irq() (hardirq_count()) -#define in_softirq() (softirq_count()) -#define in_interrupt() (irq_count()) - -#define hardirq_trylock() (!in_interrupt()) -#define hardirq_endlock() do { } while (0) - #define irq_enter() (preempt_count() += HARDIRQ_OFFSET) - -#ifdef CONFIG_PREEMPT -# error CONFIG_PREEMT currently not supported. -# define in_atomic() BUG() -# define IRQ_EXIT_OFFSET (HARDIRQ_OFFSET-1) -#else -# define in_atomic() (preempt_count() != 0) -# define IRQ_EXIT_OFFSET HARDIRQ_OFFSET -#endif - #define irq_exit() \ do { \ preempt_count() -= IRQ_EXIT_OFFSET; \ @@ -104,10 +68,4 @@ do { \ preempt_enable_no_resched(); \ } while (0) -#ifdef CONFIG_SMP - extern void synchronize_irq (unsigned int irq); -#else -# define synchronize_irq(irq) barrier() -#endif /* CONFIG_SMP */ - #endif /* _PARISC_HARDIRQ_H */ diff --git a/include/asm-ppc/hardirq.h b/include/asm-ppc/hardirq.h index 2531c3bdb5bfa..dfb847253e6c1 100644 --- a/include/asm-ppc/hardirq.h +++ b/include/asm-ppc/hardirq.h @@ -44,20 +44,6 @@ typedef struct { #define SOFTIRQ_SHIFT (PREEMPT_SHIFT + PREEMPT_BITS) #define HARDIRQ_SHIFT (SOFTIRQ_SHIFT + SOFTIRQ_BITS) -#define __MASK(x) ((1UL << (x))-1) - -#define PREEMPT_MASK (__MASK(PREEMPT_BITS) << PREEMPT_SHIFT) -#define HARDIRQ_MASK (__MASK(HARDIRQ_BITS) << HARDIRQ_SHIFT) -#define SOFTIRQ_MASK (__MASK(SOFTIRQ_BITS) << SOFTIRQ_SHIFT) - -#define hardirq_count() (preempt_count() & HARDIRQ_MASK) -#define softirq_count() (preempt_count() & SOFTIRQ_MASK) -#define irq_count() (preempt_count() & (HARDIRQ_MASK | SOFTIRQ_MASK)) - -#define PREEMPT_OFFSET (1UL << PREEMPT_SHIFT) -#define SOFTIRQ_OFFSET (1UL << SOFTIRQ_SHIFT) -#define HARDIRQ_OFFSET (1UL << HARDIRQ_SHIFT) - /* * The hardirq mask has to be large enough to have * space for potentially all IRQ sources in the system @@ -67,31 +53,7 @@ typedef struct { # error HARDIRQ_BITS is too low! #endif -/* - * Are we doing bottom half or hardware interrupt processing? - * Are we in a softirq context? Interrupt context? - */ -#define in_irq() (hardirq_count()) -#define in_softirq() (softirq_count()) -#define in_interrupt() (irq_count()) - - -#define hardirq_trylock() (!in_interrupt()) -#define hardirq_endlock() do { } while (0) - #define irq_enter() (preempt_count() += HARDIRQ_OFFSET) - -#ifdef CONFIG_PREEMPT -# define in_atomic() ((preempt_count() & ~PREEMPT_ACTIVE) != kernel_locked()) -# define preemptible() (preempt_count() == 0 && !irqs_disabled()) -# define IRQ_EXIT_OFFSET (HARDIRQ_OFFSET-1) - -#else -# define in_atomic() (preempt_count() != 0) -# define preemptible() 0 -# define IRQ_EXIT_OFFSET HARDIRQ_OFFSET -#endif - #define irq_exit() \ do { \ preempt_count() -= IRQ_EXIT_OFFSET; \ @@ -100,11 +62,5 @@ do { \ preempt_enable_no_resched(); \ } while (0) -#ifndef CONFIG_SMP -# define synchronize_irq(irq) barrier() -#else - extern void synchronize_irq(unsigned int irq); -#endif /* CONFIG_SMP */ - #endif /* __ASM_HARDIRQ_H */ #endif /* __KERNEL__ */ diff --git a/include/asm-ppc64/hardirq.h b/include/asm-ppc64/hardirq.h index e1a2fec9ffc05..c09a7486dd98e 100644 --- a/include/asm-ppc64/hardirq.h +++ b/include/asm-ppc64/hardirq.h @@ -1,4 +1,3 @@ -#ifdef __KERNEL__ #ifndef __ASM_HARDIRQ_H #define __ASM_HARDIRQ_H @@ -43,20 +42,6 @@ typedef struct { #define SOFTIRQ_SHIFT (PREEMPT_SHIFT + PREEMPT_BITS) #define HARDIRQ_SHIFT (SOFTIRQ_SHIFT + SOFTIRQ_BITS) -#define __HARDIRQ_MASK(x) ((1UL << (x))-1) - -#define PREEMPT_MASK (__HARDIRQ_MASK(PREEMPT_BITS) << PREEMPT_SHIFT) -#define SOFTIRQ_MASK (__HARDIRQ_MASK(SOFTIRQ_BITS) << SOFTIRQ_SHIFT) -#define HARDIRQ_MASK (__HARDIRQ_MASK(HARDIRQ_BITS) << HARDIRQ_SHIFT) - -#define hardirq_count() (preempt_count() & HARDIRQ_MASK) -#define softirq_count() (preempt_count() & SOFTIRQ_MASK) -#define irq_count() (preempt_count() & (HARDIRQ_MASK | SOFTIRQ_MASK)) - -#define PREEMPT_OFFSET (1UL << PREEMPT_SHIFT) -#define SOFTIRQ_OFFSET (1UL << SOFTIRQ_SHIFT) -#define HARDIRQ_OFFSET (1UL << HARDIRQ_SHIFT) - /* * The hardirq mask has to be large enough to have * space for potentially all IRQ sources in the system @@ -66,29 +51,7 @@ typedef struct { # error HARDIRQ_BITS is too low! #endif -/* - * Are we doing bottom half or hardware interrupt processing? - * Are we in a softirq context? Interrupt context? - */ -#define in_irq() (hardirq_count()) -#define in_softirq() (softirq_count()) -#define in_interrupt() (irq_count()) - - -#define hardirq_trylock() (!in_interrupt()) -#define hardirq_endlock() do { } while (0) - #define irq_enter() (preempt_count() += HARDIRQ_OFFSET) - -#ifdef CONFIG_PREEMPT -# define in_atomic() ((preempt_count() & ~PREEMPT_ACTIVE) != kernel_locked()) -# define preemptible() (preempt_count() == 0 && !irqs_disabled()) -# define IRQ_EXIT_OFFSET (HARDIRQ_OFFSET-1) -#else -# define in_atomic() (preempt_count() != 0) -# define preemptible() 0 -# define IRQ_EXIT_OFFSET HARDIRQ_OFFSET -#endif #define irq_exit() \ do { \ preempt_count() -= IRQ_EXIT_OFFSET; \ @@ -97,12 +60,4 @@ do { \ preempt_enable_no_resched(); \ } while (0) -#ifndef CONFIG_SMP -# define synchronize_irq(irq) barrier() -#else - extern void synchronize_irq(unsigned int irq); -#endif /* CONFIG_SMP */ - -#endif /* __KERNEL__ */ - #endif /* __ASM_HARDIRQ_H */ diff --git a/include/asm-s390/hardirq.h b/include/asm-s390/hardirq.h index 1092143b8b975..acbdf0c8bbb40 100644 --- a/include/asm-s390/hardirq.h +++ b/include/asm-s390/hardirq.h @@ -61,51 +61,15 @@ softirq_pending(unsigned int cpu) #define SOFTIRQ_SHIFT (PREEMPT_SHIFT + PREEMPT_BITS) #define HARDIRQ_SHIFT (SOFTIRQ_SHIFT + SOFTIRQ_BITS) -#define __MASK(x) ((1UL << (x))-1) - -#define PREEMPT_MASK (__MASK(PREEMPT_BITS) << PREEMPT_SHIFT) -#define SOFTIRQ_MASK (__MASK(SOFTIRQ_BITS) << SOFTIRQ_SHIFT) -#define HARDIRQ_MASK (__MASK(HARDIRQ_BITS) << HARDIRQ_SHIFT) - -#define hardirq_count() (preempt_count() & HARDIRQ_MASK) -#define softirq_count() (preempt_count() & SOFTIRQ_MASK) -#define irq_count() (preempt_count() & (HARDIRQ_MASK | SOFTIRQ_MASK)) - -#define PREEMPT_OFFSET (1UL << PREEMPT_SHIFT) -#define SOFTIRQ_OFFSET (1UL << SOFTIRQ_SHIFT) -#define HARDIRQ_OFFSET (1UL << HARDIRQ_SHIFT) - -/* - * Are we doing bottom half or hardware interrupt processing? - * Are we in a softirq context? Interrupt context? - */ -#define in_irq() (hardirq_count()) -#define in_softirq() (softirq_count()) -#define in_interrupt() (irq_count()) - +extern void do_call_softirq(void); +extern void account_ticks(struct pt_regs *); -#define hardirq_trylock() (!in_interrupt()) -#define hardirq_endlock() do { } while (0) +#define invoke_softirq() do_call_softirq() #define irq_enter() \ do { \ (preempt_count() += HARDIRQ_OFFSET); \ } while(0) - - -extern void do_call_softirq(void); -extern void account_ticks(struct pt_regs *); - -#define invoke_softirq() do_call_softirq() - -#ifdef CONFIG_PREEMPT -# define in_atomic() ((preempt_count() & ~PREEMPT_ACTIVE) != kernel_locked()) -# define IRQ_EXIT_OFFSET (HARDIRQ_OFFSET-1) -#else -# define in_atomic() (preempt_count() != 0) -# define IRQ_EXIT_OFFSET HARDIRQ_OFFSET -#endif - #define irq_exit() \ do { \ preempt_count() -= IRQ_EXIT_OFFSET; \ diff --git a/include/asm-s390/irq.h b/include/asm-s390/irq.h index cac6b3080725a..916a1aa0b0730 100644 --- a/include/asm-s390/irq.h +++ b/include/asm-s390/irq.h @@ -2,7 +2,7 @@ #define _ASM_IRQ_H #ifdef __KERNEL__ -#include +#include /* * the definition of irqs has changed in 2.5.46: diff --git a/include/asm-sh/hardirq.h b/include/asm-sh/hardirq.h index a57b94d22ecaa..1d7135a7dcde0 100644 --- a/include/asm-sh/hardirq.h +++ b/include/asm-sh/hardirq.h @@ -35,20 +35,6 @@ typedef struct { #define SOFTIRQ_SHIFT (PREEMPT_SHIFT + PREEMPT_BITS) #define HARDIRQ_SHIFT (SOFTIRQ_SHIFT + SOFTIRQ_BITS) -#define __MASK(x) ((1UL << (x))-1) - -#define PREEMPT_MASK (__MASK(PREEMPT_BITS) << PREEMPT_SHIFT) -#define HARDIRQ_MASK (__MASK(HARDIRQ_BITS) << HARDIRQ_SHIFT) -#define SOFTIRQ_MASK (__MASK(SOFTIRQ_BITS) << SOFTIRQ_SHIFT) - -#define hardirq_count() (preempt_count() & HARDIRQ_MASK) -#define softirq_count() (preempt_count() & SOFTIRQ_MASK) -#define irq_count() (preempt_count() & (HARDIRQ_MASK | SOFTIRQ_MASK)) - -#define PREEMPT_OFFSET (1UL << PREEMPT_SHIFT) -#define SOFTIRQ_OFFSET (1UL << SOFTIRQ_SHIFT) -#define HARDIRQ_OFFSET (1UL << HARDIRQ_SHIFT) - /* * The hardirq mask has to be large enough to have * space for potentially all IRQ sources in the system @@ -58,29 +44,10 @@ typedef struct { # error HARDIRQ_BITS is too low! #endif -/* - * Are we in an interrupt context? Either doing bottom half - * or hardware interrupt processing? - */ -#define in_irq() (hardirq_count()) -#define in_softirq() (softirq_count()) -#define in_interrupt() (irq_count()) - - -#define hardirq_trylock() (!in_interrupt()) -#define hardirq_endlock() do { } while (0) - -#define irq_enter() (preempt_count() += HARDIRQ_OFFSET) #define nmi_enter() (irq_enter()) #define nmi_exit() (preempt_count() -= HARDIRQ_OFFSET) -#ifdef CONFIG_PREEMPT -# define in_atomic() ((preempt_count() & ~PREEMPT_ACTIVE) != kernel_locked()) -# define IRQ_EXIT_OFFSET (HARDIRQ_OFFSET-1) -#else -# define in_atomic() (preempt_count() != 0) -# define IRQ_EXIT_OFFSET HARDIRQ_OFFSET -#endif +#define irq_enter() (preempt_count() += HARDIRQ_OFFSET) #define irq_exit() \ do { \ preempt_count() -= IRQ_EXIT_OFFSET; \ @@ -89,10 +56,4 @@ do { \ preempt_enable_no_resched(); \ } while (0) -#ifndef CONFIG_SMP -# define synchronize_irq(irq) barrier() -#else -extern void synchronize_irq(unsigned int irq); -#endif /* CONFIG_SMP */ - #endif /* __ASM_SH_HARDIRQ_H */ diff --git a/include/asm-sparc/hardirq.h b/include/asm-sparc/hardirq.h index e882cf49088a5..548b44167a9d6 100644 --- a/include/asm-sparc/hardirq.h +++ b/include/asm-sparc/hardirq.h @@ -42,42 +42,7 @@ typedef struct { #define SOFTIRQ_SHIFT (PREEMPT_SHIFT + PREEMPT_BITS) #define HARDIRQ_SHIFT (SOFTIRQ_SHIFT + SOFTIRQ_BITS) -#define __MASK(x) ((1UL << (x))-1) - -#define PREEMPT_MASK (__MASK(PREEMPT_BITS) << PREEMPT_SHIFT) -#define HARDIRQ_MASK (__MASK(HARDIRQ_BITS) << HARDIRQ_SHIFT) -#define SOFTIRQ_MASK (__MASK(SOFTIRQ_BITS) << SOFTIRQ_SHIFT) - -#define hardirq_count() (preempt_count() & HARDIRQ_MASK) -#define softirq_count() (preempt_count() & SOFTIRQ_MASK) -#define irq_count() (preempt_count() & (HARDIRQ_MASK | SOFTIRQ_MASK)) - -#define PREEMPT_OFFSET (1UL << PREEMPT_SHIFT) -#define SOFTIRQ_OFFSET (1UL << SOFTIRQ_SHIFT) -#define HARDIRQ_OFFSET (1UL << HARDIRQ_SHIFT) - -/* - * Are we doing bottom half or hardware interrupt processing? - * Are we in a softirq context? Interrupt context? - */ -#define in_irq() (hardirq_count()) -#define in_softirq() (softirq_count()) -#define in_interrupt() (irq_count()) - - -#define hardirq_trylock() (!in_interrupt()) -#define hardirq_endlock() do { } while (0) - #define irq_enter() (preempt_count() += HARDIRQ_OFFSET) - -#ifdef CONFIG_PREEMPT -#include -# define in_atomic() ((preempt_count() & ~PREEMPT_ACTIVE) != kernel_locked()) -# define IRQ_EXIT_OFFSET (HARDIRQ_OFFSET-1) -#else -# define in_atomic() (preempt_count() != 0) -# define IRQ_EXIT_OFFSET HARDIRQ_OFFSET -#endif #define irq_exit() \ do { \ preempt_count() -= IRQ_EXIT_OFFSET; \ @@ -86,10 +51,4 @@ do { \ preempt_enable_no_resched(); \ } while (0) -#ifndef CONFIG_SMP -# define synchronize_irq(irq) barrier() -#else /* SMP */ -extern void synchronize_irq(unsigned int irq); -#endif /* SMP */ - #endif /* __SPARC_HARDIRQ_H */ diff --git a/include/asm-sparc64/hardirq.h b/include/asm-sparc64/hardirq.h index cae78abf21582..ac63de5505080 100644 --- a/include/asm-sparc64/hardirq.h +++ b/include/asm-sparc64/hardirq.h @@ -41,42 +41,7 @@ typedef struct { #define SOFTIRQ_SHIFT (PREEMPT_SHIFT + PREEMPT_BITS) #define HARDIRQ_SHIFT (SOFTIRQ_SHIFT + SOFTIRQ_BITS) -#define __MASK(x) ((1UL << (x))-1) - -#define PREEMPT_MASK (__MASK(PREEMPT_BITS) << PREEMPT_SHIFT) -#define HARDIRQ_MASK (__MASK(HARDIRQ_BITS) << HARDIRQ_SHIFT) -#define SOFTIRQ_MASK (__MASK(SOFTIRQ_BITS) << SOFTIRQ_SHIFT) - -#define hardirq_count() (preempt_count() & HARDIRQ_MASK) -#define softirq_count() (preempt_count() & SOFTIRQ_MASK) -#define irq_count() (preempt_count() & (HARDIRQ_MASK | SOFTIRQ_MASK)) - -#define PREEMPT_OFFSET (1UL << PREEMPT_SHIFT) -#define SOFTIRQ_OFFSET (1UL << SOFTIRQ_SHIFT) -#define HARDIRQ_OFFSET (1UL << HARDIRQ_SHIFT) - -/* - * Are we doing bottom half or hardware interrupt processing? - * Are we in a softirq context? Interrupt context? - */ -#define in_irq() (hardirq_count()) -#define in_softirq() (softirq_count()) -#define in_interrupt() (irq_count()) - - -#define hardirq_trylock() (!in_interrupt()) -#define hardirq_endlock() do { } while (0) - #define irq_enter() (preempt_count() += HARDIRQ_OFFSET) - -#ifdef CONFIG_PREEMPT -# include -# define in_atomic() ((preempt_count() & ~PREEMPT_ACTIVE) != kernel_locked()) -# define IRQ_EXIT_OFFSET (HARDIRQ_OFFSET-1) -#else -# define in_atomic() (preempt_count() != 0) -# define IRQ_EXIT_OFFSET HARDIRQ_OFFSET -#endif #define irq_exit() \ do { \ preempt_count() -= IRQ_EXIT_OFFSET; \ @@ -85,10 +50,4 @@ do { \ preempt_enable_no_resched(); \ } while (0) -#ifndef CONFIG_SMP -# define synchronize_irq(irq) barrier() -#else - extern void synchronize_irq(unsigned int irq); -#endif /* CONFIG_SMP */ - #endif /* !(__SPARC64_HARDIRQ_H) */ diff --git a/include/asm-v850/hardirq.h b/include/asm-v850/hardirq.h index a997f9f8fdd78..7493d6d486824 100644 --- a/include/asm-v850/hardirq.h +++ b/include/asm-v850/hardirq.h @@ -36,20 +36,6 @@ typedef struct { #define SOFTIRQ_SHIFT (PREEMPT_SHIFT + PREEMPT_BITS) #define HARDIRQ_SHIFT (SOFTIRQ_SHIFT + SOFTIRQ_BITS) -#define __MASK(x) ((1UL << (x))-1) - -#define PREEMPT_MASK (__MASK(PREEMPT_BITS) << PREEMPT_SHIFT) -#define HARDIRQ_MASK (__MASK(HARDIRQ_BITS) << HARDIRQ_SHIFT) -#define SOFTIRQ_MASK (__MASK(SOFTIRQ_BITS) << SOFTIRQ_SHIFT) - -#define hardirq_count() (preempt_count() & HARDIRQ_MASK) -#define softirq_count() (preempt_count() & SOFTIRQ_MASK) -#define irq_count() (preempt_count() & (HARDIRQ_MASK | SOFTIRQ_MASK)) - -#define PREEMPT_OFFSET (1UL << PREEMPT_SHIFT) -#define SOFTIRQ_OFFSET (1UL << SOFTIRQ_SHIFT) -#define HARDIRQ_OFFSET (1UL << HARDIRQ_SHIFT) - /* * The hardirq mask has to be large enough to have * space for potentially all IRQ sources in the system @@ -59,27 +45,7 @@ typedef struct { # error HARDIRQ_BITS is too low! #endif -/* - * Are we doing bottom half or hardware interrupt processing? - * Are we in a softirq context? Interrupt context? - */ -#define in_irq() (hardirq_count()) -#define in_softirq() (softirq_count()) -#define in_interrupt() (irq_count()) - -#define hardirq_trylock() (!in_interrupt()) -#define hardirq_endlock() do { } while (0) - #define irq_enter() (preempt_count() += HARDIRQ_OFFSET) - -#ifdef CONFIG_PREEMPT -# define in_atomic() (preempt_count() != kernel_locked()) -# define IRQ_EXIT_OFFSET (HARDIRQ_OFFSET-1) -#else -# define in_atomic() (preempt_count() != 0) -# define IRQ_EXIT_OFFSET HARDIRQ_OFFSET -#endif - #define irq_exit() \ do { \ preempt_count() -= IRQ_EXIT_OFFSET; \ @@ -88,10 +54,4 @@ do { \ preempt_enable_no_resched(); \ } while (0) -#ifndef CONFIG_SMP -# define synchronize_irq(irq) barrier() -#else -# error v850nommu SMP is not available -#endif /* CONFIG_SMP */ - #endif /* __V850_HARDIRQ_H__ */ diff --git a/include/asm-x86_64/hardirq.h b/include/asm-x86_64/hardirq.h index d3c08b2a07695..9ce1a78084e86 100644 --- a/include/asm-x86_64/hardirq.h +++ b/include/asm-x86_64/hardirq.h @@ -37,20 +37,6 @@ #define SOFTIRQ_SHIFT (PREEMPT_SHIFT + PREEMPT_BITS) #define HARDIRQ_SHIFT (SOFTIRQ_SHIFT + SOFTIRQ_BITS) -#define __MASK(x) ((1UL << (x))-1) - -#define PREEMPT_MASK (__MASK(PREEMPT_BITS) << PREEMPT_SHIFT) -#define HARDIRQ_MASK (__MASK(HARDIRQ_BITS) << HARDIRQ_SHIFT) -#define SOFTIRQ_MASK (__MASK(SOFTIRQ_BITS) << SOFTIRQ_SHIFT) - -#define hardirq_count() (preempt_count() & HARDIRQ_MASK) -#define softirq_count() (preempt_count() & SOFTIRQ_MASK) -#define irq_count() (preempt_count() & (HARDIRQ_MASK | SOFTIRQ_MASK)) - -#define PREEMPT_OFFSET (1UL << PREEMPT_SHIFT) -#define SOFTIRQ_OFFSET (1UL << SOFTIRQ_SHIFT) -#define HARDIRQ_OFFSET (1UL << HARDIRQ_SHIFT) - /* * The hardirq mask has to be large enough to have * space for potentially all IRQ sources in the system @@ -60,31 +46,10 @@ # error HARDIRQ_BITS is too low! #endif -/* - * Are we doing bottom half or hardware interrupt processing? - * Are we in a softirq context? Interrupt context? - */ -#define in_irq() (hardirq_count()) -#define in_softirq() (softirq_count()) -#define in_interrupt() (irq_count()) - - -#define hardirq_trylock() (!in_interrupt()) -#define hardirq_endlock() do { } while (0) - -#define irq_enter() (preempt_count() += HARDIRQ_OFFSET) #define nmi_enter() (irq_enter()) #define nmi_exit() (preempt_count() -= HARDIRQ_OFFSET) - -#ifdef CONFIG_PREEMPT -# include -# define in_atomic() ((preempt_count() & ~PREEMPT_ACTIVE) != kernel_locked()) -# define IRQ_EXIT_OFFSET (HARDIRQ_OFFSET-1) -#else -# define in_atomic() (preempt_count() != 0) -# define IRQ_EXIT_OFFSET HARDIRQ_OFFSET -#endif +#define irq_enter() (preempt_count() += HARDIRQ_OFFSET) #define irq_exit() \ do { \ preempt_count() -= IRQ_EXIT_OFFSET; \ @@ -93,10 +58,4 @@ do { \ preempt_enable_no_resched(); \ } while (0) -#ifndef CONFIG_SMP -# define synchronize_irq(irq) barrier() -#else - extern void synchronize_irq(unsigned int irq); -#endif /* CONFIG_SMP */ - #endif /* __ASM_HARDIRQ_H */ diff --git a/include/linux/hardirq.h b/include/linux/hardirq.h new file mode 100644 index 0000000000000..6ab0b3daaa68f --- /dev/null +++ b/include/linux/hardirq.h @@ -0,0 +1,51 @@ +#ifndef LINUX_HARDIRQ_H +#define LINUX_HARDIRQ_H + +#include +#ifdef CONFIG_PREEPT +#include +#endif +#include + +#define __IRQ_MASK(x) ((1UL << (x))-1) + +#define PREEMPT_MASK (__IRQ_MASK(PREEMPT_BITS) << PREEMPT_SHIFT) +#define HARDIRQ_MASK (__IRQ_MASK(HARDIRQ_BITS) << HARDIRQ_SHIFT) +#define SOFTIRQ_MASK (__IRQ_MASK(SOFTIRQ_BITS) << SOFTIRQ_SHIFT) + +#define PREEMPT_OFFSET (1UL << PREEMPT_SHIFT) +#define SOFTIRQ_OFFSET (1UL << SOFTIRQ_SHIFT) +#define HARDIRQ_OFFSET (1UL << HARDIRQ_SHIFT) + +#define hardirq_count() (preempt_count() & HARDIRQ_MASK) +#define softirq_count() (preempt_count() & SOFTIRQ_MASK) +#define irq_count() (preempt_count() & (HARDIRQ_MASK | SOFTIRQ_MASK)) + +/* + * Are we doing bottom half or hardware interrupt processing? + * Are we in a softirq context? Interrupt context? + */ +#define in_irq() (hardirq_count()) +#define in_softirq() (softirq_count()) +#define in_interrupt() (irq_count()) + +#define hardirq_trylock() (!in_interrupt()) +#define hardirq_endlock() do { } while (0) + +#ifdef CONFIG_PREEMPT +# define in_atomic() ((preempt_count() & ~PREEMPT_ACTIVE) != kernel_locked()) +# define preemptible() (preempt_count() == 0 && !irqs_disabled()) +# define IRQ_EXIT_OFFSET (HARDIRQ_OFFSET-1) +#else +# define in_atomic() (preempt_count() != 0) +# define preemptible() 0 +# define IRQ_EXIT_OFFSET HARDIRQ_OFFSET +#endif + +#ifdef CONFIG_SMP +extern void synchronize_irq(unsigned int irq); +#else +# define synchronize_irq(irq) barrier() +#endif + +#endif /* LINUX_HARDIRQ_H */ diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h index 565321b052131..c7bf379590099 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h @@ -8,8 +8,8 @@ #include #include #include +#include #include -#include #include #include diff --git a/include/net/ipv6.h b/include/net/ipv6.h index 034cf3084a778..a3f44754ac081 100644 --- a/include/net/ipv6.h +++ b/include/net/ipv6.h @@ -16,7 +16,7 @@ #define _NET_IPV6_H #include -#include +#include #include #include #include diff --git a/sound/oss/ali5455.c b/sound/oss/ali5455.c index a7e2c3c0a5fd6..8976224f5ae1e 100644 --- a/sound/oss/ali5455.c +++ b/sound/oss/ali5455.c @@ -65,7 +65,6 @@ #include #include #include -#include #ifndef PCI_DEVICE_ID_ALI_5455 #define PCI_DEVICE_ID_ALI_5455 0x5455 diff --git a/sound/oss/au1000.c b/sound/oss/au1000.c index ccfbad2dd02fb..c5d220e366dbd 100644 --- a/sound/oss/au1000.c +++ b/sound/oss/au1000.c @@ -67,9 +67,9 @@ #include #include #include +#include #include #include -#include #include #include diff --git a/sound/oss/cs46xx.c b/sound/oss/cs46xx.c index a681f7b969055..c212b948c423c 100644 --- a/sound/oss/cs46xx.c +++ b/sound/oss/cs46xx.c @@ -94,7 +94,6 @@ #include #include #include -#include #include "cs46xxpm-24.h" #include "cs46xx_wrapper-24.h" diff --git a/sound/oss/forte.c b/sound/oss/forte.c index ac4badae5f5e0..67b2bbb2aa101 100644 --- a/sound/oss/forte.c +++ b/sound/oss/forte.c @@ -45,7 +45,6 @@ #include #include -#include #include #define DRIVER_NAME "forte" diff --git a/sound/oss/i810_audio.c b/sound/oss/i810_audio.c index 24837f7d7427e..47e5bed02bb07 100644 --- a/sound/oss/i810_audio.c +++ b/sound/oss/i810_audio.c @@ -101,7 +101,6 @@ #include #include #include -#include #define DRIVER_VERSION "1.01" diff --git a/sound/oss/ite8172.c b/sound/oss/ite8172.c index 16e7d01efec2a..f98413314733c 100644 --- a/sound/oss/ite8172.c +++ b/sound/oss/ite8172.c @@ -70,10 +70,10 @@ #include #include #include +#include #include #include #include -#include #include /* --------------------------------------------------------------------- */ diff --git a/sound/oss/nec_vrc5477.c b/sound/oss/nec_vrc5477.c index b40611b422a06..0242f9021079b 100644 --- a/sound/oss/nec_vrc5477.c +++ b/sound/oss/nec_vrc5477.c @@ -82,7 +82,6 @@ #include #include #include -#include /* -------------------debug macros -------------------------------------- */ /* #undef VRC5477_AC97_DEBUG */ diff --git a/sound/oss/rme96xx.c b/sound/oss/rme96xx.c index 3df045dd55f96..c770137f78806 100644 --- a/sound/oss/rme96xx.c +++ b/sound/oss/rme96xx.c @@ -54,7 +54,7 @@ TODO: #include #include #include -#include +#include #include #include #include diff --git a/sound/oss/swarm_cs4297a.c b/sound/oss/swarm_cs4297a.c index 4846dc2cb1213..dee5a912d6652 100644 --- a/sound/oss/swarm_cs4297a.c +++ b/sound/oss/swarm_cs4297a.c @@ -70,6 +70,7 @@ #include #include #include +#include #include #include #include @@ -77,7 +78,6 @@ #include #include #include -#include #include #include diff --git a/sound/oss/trident.c b/sound/oss/trident.c index 1beb4e9ffe89a..813a27e185d34 100644 --- a/sound/oss/trident.c +++ b/sound/oss/trident.c @@ -217,7 +217,6 @@ #include #include #include -#include #include #include -- 2.53.0