• Jonas Gorski's avatar
    MIPS: BCM63xx: Replace irq dispatch code with a generic version · 86ee4333
    Jonas Gorski authored
    The generic version uses a variable length of u32 registers instead of u32/u64.
    This allows easier support for "wider" registers without having to rewrite
    everything.
    
    This "generic" version is as fast as the old version in the best case
    (i == next set bit), and twice as fast in the worst case in 64 bits.
    
    Using a macro was chosen over a (forced) inline version because gcc generated
    more compact code with the macro.
    
    The change from (signed) int to unsigned int for i and to_call was intentional
    as the value can be only between 0 and (width - 1) anyway, and allowed gcc to
    optimise the code a bit further.
    Signed-off-by: default avatarJonas Gorski <jogo@openwrt.org>
    Cc: linux-mips@linux-mips.org
    Cc: John Crispin <blogic@openwrt.org>
    Cc: Maxime Bizon <mbizon@freebox.fr>
    Cc: Florian Fainelli <florian@openwrt.org>
    Cc: Kevin Cernekee <cernekee@gmail.com>
    Cc: Gregory Fong <gregory.0xf0@gmail.com>
    Patchwork: https://patchwork.linux-mips.org/patch/7316/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
    86ee4333
irq.c 11 KB