#include <asm/asm.h>
#include <asm/mipsregs.h>
#include <asm/regdef.h>
#include <asm/stackframe.h>

	.set	noat
	.align	5

NESTED(ev96100IRQ, PT_SIZE, sp)
	SAVE_ALL
	CLI				# Important: mark KERNEL mode !

	mfc0	t0, CP0_CAUSE		# get pending interrupts
	mfc0	t1, CP0_STATUS		# get enabled interrupts
	and	t0, t1			# isolate allowed ones

	# FIX ME add R7000 extensions
	andi	t0,0xff00		# isolate pending bits
	andi	a0, t0, CAUSEF_IP7
	beq	a0, zero, 1f
	move	a0, sp
	jal	mips_timer_interrupt
	j	ret_from_irq

1:	beqz	t0, 3f			# spurious interrupt
	move	a0, t0
	move	a1, sp			# delay slot
	jal	ev96100_cpu_irq
	j	ret_from_irq

3:	j	spurious_interrupt
	END(ev96100IRQ)
