46 lines
949 B
ArmAsm
46 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)
|