#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 | |
jal ev96100_cpu_irq | |
j ret_from_irq | |
3: j spurious_interrupt | |
END(ev96100IRQ) |