patch-2.1.101 linux/arch/mips/deskstation/int-handler.S
Next file: linux/arch/mips/deskstation/io.c
Previous file: linux/arch/mips/deskstation/hw-access.c
Back to the patch index
Back to the overall index
- Lines: 105
- Date:
Wed Dec 31 16:00:00 1969
- Orig file:
v2.1.100/linux/arch/mips/deskstation/int-handler.S
- Orig date:
Wed Dec 10 10:31:09 1997
diff -u --recursive --new-file v2.1.100/linux/arch/mips/deskstation/int-handler.S linux/arch/mips/deskstation/int-handler.S
@@ -1,104 +0,0 @@
-/*
- * Deskstation rPC44/Tyne specific interrupt handler code
- *
- * Copyright (C) 1994, 1995, 1996, 1997 by Ralf Baechle
- *
- * $Id: int-handler.S,v 1.3 1997/09/20 19:20:09 root Exp $
- */
-#include <asm/asm.h>
-#include <asm/mipsconfig.h>
-#include <asm/mipsregs.h>
-#include <asm/regdef.h>
-#include <asm/stackframe.h>
-
-#error "FIXME - PORT_BASE is defined to mips_io_port_base which breaks this file"
-
- .text
- .set noreorder
- .set noat
- .align 5
- NESTED(deskstation_handle_int, PT_SIZE, sp)
- SAVE_ALL
- REG_S sp,PT_OR2(sp)
- CLI
- .set at
- lui s0,%hi(PORT_BASE)
- li a0,0x0f
- sb a0,%lo(PORT_BASE+0x20)(s0) # poll command
- lb a0,%lo(PORT_BASE+0x20)(s0) # read result
- bgtz a0,poll_second
- andi a0,7
- beq a0,2,poll_second # cascade?
- li s1,1 # delay slot
- /*
- * Acknowledge first pic
- */
- lb t2,%lo(PORT_BASE+0x21)(s0)
- lui s4,%hi(cache_21)
- lb t0,%lo(cache_21)(s4)
- sllv s1,s1,a0
- or t0,s1
- sb t0,%lo(cache_21)(s4)
- sb t0,%lo(PORT_BASE+0x21)(s0)
- li t2,0x20
- sb t2,%lo(PORT_BASE+0x20)(s0)
- /*
- * Now call the real handler
- */
- jal do_IRQ
- move a1,sp
- /*
- * Unblock first pic
- */
- lbu t1,%lo(PORT_BASE+0x21)(s0)
- lb t1,%lo(cache_21)(s4)
- nor s1,zero,s1
- and t1,s1
- sb t1,%lo(cache_21)(s4)
- j ret_from_irq
- sb t1,%lo(PORT_BASE+0x21)(s0) # delay slot
-
- /*
- * Cascade interrupt from second PIC
- */
- .align 5
-poll_second: li a0,0x0f
- sb a0,%lo(PORT_BASE+0xa0)(s0) # poll command
- lb a0,%lo(PORT_BASE+0xa0)(s0) # read result
- bgtz a0,3f
- andi a0,7
- /*
- * Acknowledge second pic
- */
- lbu t2,%lo(PORT_BASE+0xa1)(s0)
- lui s4,%hi(cache_A1)
- lb t3,%lo(cache_A1)(s4)
- sllv s1,s1,a0
- or t3,s1
- sb t3,%lo(cache_A1)(s4)
- sb t3,%lo(PORT_BASE+0xa1)(s0)
- li t3,0x20
- sb t3,%lo(PORT_BASE+0xa0)(s0)
- sb t3,%lo(PORT_BASE+0x20)(s0)
- /*
- * Now call the real handler
- */
- jal do_IRQ
- nop
- /*
- * Unblock second pic
- */
- lb t1,%lo(PORT_BASE+0xa1)(s0)
- lb t1,%lo(cache_A1)(s4)
- nor s1,zero,s1
- and t1,t1,s1
- sb t1,%lo(cache_A1)(s4)
- j ret_from_irq
- sb t1,%lo(PORT_BASE+0xa1)(s0)
-
-/*
- * "Jump extender" to reach spurious_interrupt
- */
-3: j spurious_interrupt
- nop
- END(deskstation_handle_int)
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov