/* * Copyright (c) 2002 Philips, Inc. All rights. * Copyright (c) 2002 Red Hat, Inc. All rights. * * This software may be freely redistributed under the terms of the * GNU General Public License. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * Based upon arch/mips/galileo-boards/ev64240/int-handler.S * */ #include #include #include #include #include /* * cp0_irqdispatch * * Code to handle in-core interrupt exception. */ .align 5 .set reorder .set noat NESTED(cp0_irqdispatch, PT_SIZE, sp) SAVE_ALL CLI .set at mfc0 t0,CP0_CAUSE mfc0 t2,CP0_STATUS and t0,t2 andi t1,t0,STATUSF_IP2 /* int0 hardware line */ bnez t1,ll_hw0_irq nop andi t1,t0,STATUSF_IP7 /* int5 hardware line */ bnez t1,ll_timer_irq nop /* wrong alarm or masked ... */ j spurious_interrupt nop END(cp0_irqdispatch) .align 5 .set reorder ll_hw0_irq: li a0,2 move a1,sp jal hw0_irqdispatch nop j ret_from_irq nop .align 5 .set reorder ll_timer_irq: mfc0 t3,CP0_CONFIG,7 andi t4,t3,0x01c0 beqz t4,ll_timer_out nop li a0,7 move a1,sp jal timer_irqdispatch nop ll_timer_out: j ret_from_irq nop