Path: blob/master/arch/arm/mach-ixp4xx/include/mach/entry-macro.S
17687 views
/*1* arch/arm/mach-ixp4xx/include/mach/entry-macro.S2*3* Low-level IRQ helper macros for IXP4xx-based platforms4*5* This file is licensed under the terms of the GNU General Public6* License version 2. This program is licensed "as is" without any7* warranty of any kind, whether express or implied.8*/9#include <mach/hardware.h>1011.macro disable_fiq12.endm1314.macro get_irqnr_preamble, base, tmp15.endm1617.macro arch_ret_to_user, tmp1, tmp218.endm1920.macro get_irqnr_and_base, irqnr, irqstat, base, tmp21ldr \irqstat, =(IXP4XX_INTC_BASE_VIRT+IXP4XX_ICIP_OFFSET)22ldr \irqstat, [\irqstat] @ get interrupts23cmp \irqstat, #024beq 1001f @ upper IRQ?25clz \irqnr, \irqstat26mov \base, #3127sub \irqnr, \base, \irqnr28b 1002f @ lower IRQ being29@ handled30311001:32/*33* IXP465/IXP435 has an upper IRQ status register34*/35#if defined(CONFIG_CPU_IXP46X) || defined(CONFIG_CPU_IXP43X)36ldr \irqstat, =(IXP4XX_INTC_BASE_VIRT+IXP4XX_ICIP2_OFFSET)37ldr \irqstat, [\irqstat] @ get upper interrupts38mov \irqnr, #6339clz \irqstat, \irqstat40cmp \irqstat, #3241subne \irqnr, \irqnr, \irqstat42#endif431002:44.endm4546474849