lkml.org 
[lkml]   [2006]   [Sep]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 2/3] FRV: Permit __do_IRQ() to be dispensed with
    Date
    From: David Howells <dhowells@redhat.com>

    Permit __do_IRQ() to be dispensed with based on a configuration option.

    Signed-Off-By: David Howells <dhowells@redhat.com>
    ---

    arch/frv/Kconfig | 4 ++++
    include/linux/irq.h | 6 ++++++
    kernel/irq/handle.c | 2 ++
    3 files changed, 12 insertions(+), 0 deletions(-)

    diff --git a/arch/frv/Kconfig b/arch/frv/Kconfig
    index 130fe8f..69f9846 100644
    --- a/arch/frv/Kconfig
    +++ b/arch/frv/Kconfig
    @@ -29,6 +29,10 @@ config GENERIC_HARDIRQS
    bool
    default y

    +config GENERIC_HARDIRQS_NO__DO_IRQ
    + bool
    + default y
    +
    config GENERIC_TIME
    bool
    default y
    diff --git a/include/linux/irq.h b/include/linux/irq.h
    index fbf6d90..48d3cb3 100644
    --- a/include/linux/irq.h
    +++ b/include/linux/irq.h
    @@ -320,7 +320,9 @@ handle_irq_name(void fastcall (*handle)(
    * Monolithic do_IRQ implementation.
    * (is an explicit fastcall, because i386 4KSTACKS calls it from assembly)
    */
    +#ifndef CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ
    extern fastcall unsigned int __do_IRQ(unsigned int irq, struct pt_regs *regs);
    +#endif

    /*
    * Architectures call this to let the generic IRQ layer
    @@ -332,10 +334,14 @@ static inline void generic_handle_irq(un
    {
    struct irq_desc *desc = irq_desc + irq;

    +#ifdef CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ
    + desc->handle_irq(irq, desc, regs);
    +#else
    if (likely(desc->handle_irq))
    desc->handle_irq(irq, desc, regs);
    else
    __do_IRQ(irq, regs);
    +#endif
    }

    /* Handling of unhandled and spurious interrupts: */
    diff --git a/kernel/irq/handle.c b/kernel/irq/handle.c
    index fc4e906..2e9e800 100644
    --- a/kernel/irq/handle.c
    +++ b/kernel/irq/handle.c
    @@ -149,6 +149,7 @@ irqreturn_t handle_IRQ_event(unsigned in
    return retval;
    }

    +#ifndef CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ
    /**
    * __do_IRQ - original all in one highlevel IRQ handler
    * @irq: the interrupt number
    @@ -248,6 +249,7 @@ out:

    return 1;
    }
    +#endif

    #ifdef CONFIG_TRACE_IRQFLAGS

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2006-09-08 17:37    [W:2.047 / U:0.968 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site