Path: blob/master/arch/arm/mach-h720x/include/mach/entry-macro.S
17602 views
/*1* arch/arm/mach-h720x/include/mach/entry-macro.S2*3* Low-level IRQ helper macros for Hynix HMS720x 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*/910.macro disable_fiq11.endm1213.macro get_irqnr_preamble, base, tmp14.endm1516.macro arch_ret_to_user, tmp1, tmp217.endm1819.macro get_irqnr_and_base, irqnr, irqstat, base, tmp20#if defined (CONFIG_CPU_H7201) || defined (CONFIG_CPU_H7202)21@ we could use the id register on H7202, but this is not22@ properly updated when we come back from asm_do_irq23@ without a previous return from interrupt24@ (see loops below in irq_svc, irq_usr)25@ We see unmasked pending ints only, as the masked pending ints26@ are not visible here2728mov \base, #0xf0000000 @ base register29orr \base, \base, #0x24000 @ irqbase30ldr \irqstat, [\base, #0x04] @ get interrupt status31#if defined (CONFIG_CPU_H7201)32ldr \tmp, =0x001fffff33#else34mvn \tmp, #0xc000000035#endif36and \irqstat, \irqstat, \tmp @ mask out unused ints37mov \irqnr, #03839mov \tmp, #0xff0040orr \tmp, \tmp, #0xff41tst \irqstat, \tmp42addeq \irqnr, \irqnr, #1643moveq \irqstat, \irqstat, lsr #1644tst \irqstat, #25545addeq \irqnr, \irqnr, #846moveq \irqstat, \irqstat, lsr #847tst \irqstat, #1548addeq \irqnr, \irqnr, #449moveq \irqstat, \irqstat, lsr #450tst \irqstat, #351addeq \irqnr, \irqnr, #252moveq \irqstat, \irqstat, lsr #253tst \irqstat, #154addeq \irqnr, \irqnr, #155moveq \irqstat, \irqstat, lsr #156tst \irqstat, #1 @ bit 0 should be set57.endm5859.macro irq_prio_table60.endm6162#else63#error hynix processor selection missmatch64#endif65666768