linux/arch/mips/sgi-ip27/ip27-irq-glue.S
Linus Torvalds 1da177e4c3 Linux-2.6.12-rc2
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.

Let it rip!
2005-04-16 15:20:36 -07:00

45 lines
949 B
ArmAsm

/*
* 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)