• Mark Rutland's avatar
    irq: arm: perform irqentry in entry code · a7b0872e
    Mark Rutland authored
    In preparation for removing HANDLE_DOMAIN_IRQ_IRQENTRY, have arch/arm
    perform all the irqentry accounting in its entry code.
    
    For configurations with CONFIG_GENERIC_IRQ_MULTI_HANDLER, we can use
    generic_handle_arch_irq(). Other than asm_do_IRQ(), all C calls to
    handle_IRQ() are from irqchip handlers which will be called from
    generic_handle_arch_irq(), so to avoid double accounting IRQ entry, the
    entry logic is moved from handle_IRQ() into asm_do_IRQ().
    
    For ARMv7M the entry assembly is tightly coupled with the NVIC irqchip, and
    while the entry code should logically live under arch/arm/, moving the
    entry logic there makes things more convoluted. So for now, place the
    entry logic in the NVIC irqchip, but separated into a separate
    function to make the split of responsibility clear.
    
    For all other configurations without CONFIG_GENERIC_IRQ_MULTI_HANDLER,
    IRQ entry is already handled in arch code, and requires no changes.
    
    There should be no functional change as a result of this patch.
    Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
    Reviewed-by: default avatarMarc Zyngier <maz@kernel.org>
    Tested-by: Vladimir Murzin <vladimir.murzin@arm.com> # ARMv7M
    Cc: Russell King <linux@armlinux.org.uk>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    a7b0872e
entry-armv.S 28.6 KB