blob: d9e3cc8ac7f61a663a861428f3073e9acf165309 [file] [log] [blame]
/*
* arch/mips/philips/nino/int-handler.S
*
* Copyright (C) 2001 Steven J. Hill (sjhill@realitydiluted.com)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* Interrupt exception dispatch code for Philips Nino
*/
#include <asm/asm.h>
#include <asm/mipsregs.h>
#include <asm/regdef.h>
#include <asm/stackframe.h>
/*
* Here is the table of interrupts for the Philips Nino
* which uses the Philips PR31700/Toshiba TMPR3912 core.
*
* MIPS IRQ Description
* -------- --------------------------------
* 0 SW0 interrupt (unused)
* 1 SW1 interrupt (unused)
* 2
* 3
* 4 PR31700 low priority interrupts
* 5
* 6 PR31700 high priority interrupts
* 7
*/
.text
.set noreorder
.set noat
.align 5
NESTED(ninoIRQ, PT_SIZE, sp)
SAVE_ALL
CLI
.set at
mfc0 s0, CP0_CAUSE # determine cause
andi a0, s0, CAUSEF_IP6
beq a0, zero, 1f
andi a0, s0, CAUSEF_IP4 # delay slot
move a0, sp
jal irq6_dispatch
nop # delay slot
j ret_from_irq
nop # delay slot
1:
beq a0, zero, 1f
nop # delay slot
move a0, sp
jal irq4_dispatch
nop # delay slot
j ret_from_irq
nop # delay slot
1:
/* We should never get here */
move a0, sp
j irq_bad
nop
END(ninoIRQ)