| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | /* | 
|  | 2 | * This file is subject to the terms and conditions of the GNU General Public | 
|  | 3 | * License.  See the file "COPYING" in the main directory of this archive | 
|  | 4 | * for more details. | 
|  | 5 | * | 
|  | 6 | * Copyright (C) 1999 Ralf Baechle | 
|  | 7 | * Copyright (C) 1999 Silicon Graphics, Inc. | 
|  | 8 | */ | 
|  | 9 | #include <asm/asm.h> | 
|  | 10 | #include <asm/mipsregs.h> | 
|  | 11 | #include <asm/regdef.h> | 
|  | 12 | #include <asm/stackframe.h> | 
|  | 13 |  | 
|  | 14 | .text | 
|  | 15 | .align	5 | 
|  | 16 | NESTED(ip27_irq, PT_SIZE, sp) | 
|  | 17 | SAVE_ALL | 
|  | 18 | CLI | 
|  | 19 |  | 
|  | 20 | mfc0	s0, CP0_CAUSE | 
|  | 21 | mfc0	t0, CP0_STATUS | 
|  | 22 | and	s0, t0 | 
|  | 23 | move	a0, sp | 
|  | 24 | PTR_LA	ra, ret_from_irq | 
|  | 25 |  | 
|  | 26 | /* First check for RT interrupt.  */ | 
|  | 27 | andi	t0, s0, CAUSEF_IP4 | 
|  | 28 | bnez	t0, ip4 | 
|  | 29 | andi	t0, s0, CAUSEF_IP2 | 
|  | 30 | bnez	t0, ip2 | 
|  | 31 | andi	t0, s0, CAUSEF_IP3 | 
|  | 32 | bnez	t0, ip3 | 
|  | 33 | andi	t0, s0, CAUSEF_IP5 | 
|  | 34 | bnez	t0, ip5 | 
|  | 35 | andi	t0, s0, CAUSEF_IP6 | 
|  | 36 | bnez	t0, ip6 | 
|  | 37 | j	ra | 
|  | 38 |  | 
|  | 39 | ip2:	j	ip27_do_irq_mask0	# PI_INT_PEND_0 or CC_PEND_{A|B} | 
|  | 40 | ip3:	j	ip27_do_irq_mask1	# PI_INT_PEND_1 | 
|  | 41 | ip4:	j	ip27_rt_timer_interrupt | 
|  | 42 | ip5:	j	ip27_prof_timer | 
|  | 43 | ip6:	j	ip27_hub_error | 
|  | 44 |  | 
|  | 45 | END(ip27_irq) |