/arch/mips/sgi-ip27/ip27-irq-glue.S
https://bitbucket.org/evzijst/gittest · Assembly · 45 lines · 31 code · 5 blank · 9 comment · 0 complexity · 00d699b9a40a6fb939fb2405b68f9d18 MD5 · raw file
- /*
- * This file is subject to the terms and conditions of the GNU General Public
- * License. See the file "COPYING" in the main directory of this archive
- * for more details.
- *
- * Copyright (C) 1999 Ralf Baechle
- * Copyright (C) 1999 Silicon Graphics, Inc.
- */
- #include <asm/asm.h>
- #include <asm/mipsregs.h>
- #include <asm/regdef.h>
- #include <asm/stackframe.h>
- .text
- .align 5
- NESTED(ip27_irq, PT_SIZE, sp)
- SAVE_ALL
- CLI
- mfc0 s0, CP0_CAUSE
- mfc0 t0, CP0_STATUS
- and s0, t0
- move a0, sp
- PTR_LA ra, ret_from_irq
- /* First check for RT interrupt. */
- andi t0, s0, CAUSEF_IP4
- bnez t0, ip4
- andi t0, s0, CAUSEF_IP2
- bnez t0, ip2
- andi t0, s0, CAUSEF_IP3
- bnez t0, ip3
- andi t0, s0, CAUSEF_IP5
- bnez t0, ip5
- andi t0, s0, CAUSEF_IP6
- bnez t0, ip6
- j ra
- ip2: j ip27_do_irq_mask0 # PI_INT_PEND_0 or CC_PEND_{A|B}
- ip3: j ip27_do_irq_mask1 # PI_INT_PEND_1
- ip4: j ip27_rt_timer_interrupt
- ip5: j ip27_prof_timer
- ip6: j ip27_hub_error
- END(ip27_irq)