summaryrefslogtreecommitdiffstats
path: root/arch/mips/dec
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>1997-12-01 17:57:09 +0000
committerRalf Baechle <ralf@linux-mips.org>1997-12-01 17:57:09 +0000
commita62a0f262e0179df8c632f529c95abf54ef78332 (patch)
tree80e6a7a7d407d08e218332bb3fcccdaf9f28fcc1 /arch/mips/dec
parentfd095d09f2d475dc2e8599b1b8bae1cd65e91685 (diff)
Part #2 merging back my changes ...
Diffstat (limited to 'arch/mips/dec')
-rw-r--r--arch/mips/dec/decstation.S33
-rw-r--r--arch/mips/dec/int-handler.S40
2 files changed, 25 insertions, 48 deletions
diff --git a/arch/mips/dec/decstation.S b/arch/mips/dec/decstation.S
index 612fcea0b..ebc618a4c 100644
--- a/arch/mips/dec/decstation.S
+++ b/arch/mips/dec/decstation.S
@@ -15,7 +15,7 @@
* (Paul, you need to fix this file to comply with NAPS. Won't be
* too hard - Ralf)
*
- * $Id:$
+ * $Id: decstation.S,v 1.3 1997/09/20 19:20:06 root Exp $
*/
#include <asm/asm.h>
#include <asm/mipsconfig.h>
@@ -257,19 +257,16 @@ loc_floppy: PANIC("Unimplemented loc_floppy handler")
/*
* Now call the real handler
*/
-loc_call: la t0,IRQ_vectors # delay slot
-
- /*
+loc_call: /*
* Temporarily disable interrupt source
*/
/* lhu t2,JAZZ_IO_IRQ_ENABLE
*/
- addu t0,t3 # make ptr to IRQ handler
- LOAD_L t0,(t0)
and t2,s1 # delay slot
/* sh t2,JAZZ_IO_IRQ_ENABLE */
- jalr t0 # call IRQ handler
- nor s1,zero,s1 # delay slot
+ nor s1,zero,s1
+ jal do_IRQ # call IRQ handler
+ move a1,sp
/*
* Reenable interrupt
@@ -278,7 +275,7 @@ loc_call: la t0,IRQ_vectors # delay slot
or t2,s1
/* sh t2,JAZZ_IO_IRQ_ENABLE */
- jr v0
+ j ret_from_irq
nop # delay slot
ll_tc3: PANIC("Unimplemented tc3 interrupt handler")
@@ -304,19 +301,15 @@ ll_reset: li a0,0
/*
* Now call the real handler
*/
-call_real: la t0,IRQ_vectors # delay slot
-
- /*
+call_real: /*
* temporarily disable interrupt
*/
mfc0 t2,CP0_STATUS
and t2,s1
-
- addu t0,t3
- LOAD_L t0,(t0)
- mtc0 t2,CP0_STATUS # delay slot
- jalr t0
- nor s1,zero,s1 # delay slot
+ mtc0 t2,CP0_STATUS
+ nor s1,zero,s1
+ jal do_IRQ
+ move a1,sp
/*
* reenable interrupt
@@ -325,8 +318,8 @@ call_real: la t0,IRQ_vectors # delay slot
or t2,s1
mtc0 t2,CP0_STATUS
- jr v0
- nop # delay slot
+ j ret_from_irq
+ nop # delay slot
/*
* Just for debugging... load a0 with address of the point inside the
diff --git a/arch/mips/dec/int-handler.S b/arch/mips/dec/int-handler.S
index 1706dc975..87348b5b1 100644
--- a/arch/mips/dec/int-handler.S
+++ b/arch/mips/dec/int-handler.S
@@ -12,7 +12,7 @@
* FIXME: still plenty to do in this file, as much of the code hasn't been
* modified to suit the DECStation's interrupts.
*
- * $Id:$
+ * $Id: int-handler.S,v 1.3 1997/09/20 19:20:07 root Exp $
*/
#include <asm/asm.h>
#include <asm/regdef.h>
@@ -98,7 +98,7 @@ ll_sw0: li s1,~IE_SW0
PRINT("sw0 received...\n")
li t1,1
b call_real
- li t3,PTRSIZE # delay slot, re-map to irq level 1
+ nop
ll_sw1: li s1,~IE_SW1
PANIC("Unimplemented sw1 handler")
@@ -108,14 +108,6 @@ loc_sound: PANIC("Unimplemented loc_sound handler")
loc_video: PANIC("Unimplemented loc_video handler")
loc_scsi: PANIC("Unimplemented loc_scsi handler")
-/*
- * Ethernet interrupt, remapped to level 15
- * NOTE: Due to a bug somewhere in the kernel I was not able
- * to figure out, the PRINT() is necessary. Without this,
- * I get a "gfp called nonatomically from interrupt 00000000".
- * Only god knows why... Tell me if you find the reason!
- * Andy, 6/16/95
- */
loc_ethernet: PANIC("Unimplemented loc_ethernet")
/*
@@ -148,19 +140,15 @@ loc_floppy: PANIC("Unimplemented loc_floppy handler")
/*
* Now call the real handler
*/
-loc_call: la t0,IRQ_vectors # delay slot
-
- /*
+loc_call: /*
* Temporarily disable interrupt source
*/
/* lhu t2,JAZZ_IO_IRQ_ENABLE
*/
- addu t0,t3 # make ptr to IRQ handler
- lw t0,(t0)
- and t2,s1 # delay slot
+ and t2,s1
/* sh t2,JAZZ_IO_IRQ_ENABLE */
- jalr t0 # call IRQ handler
- nor s1,zero,s1 # delay slot
+ jal do_IRQ # call IRQ handler
+ nor s1,zero,s1
/*
* Reenable interrupt
@@ -169,7 +157,7 @@ loc_call: la t0,IRQ_vectors # delay slot
or t2,s1
/* sh t2,JAZZ_IO_IRQ_ENABLE */
- jr v0
+ j ret_from_irq
nop # delay slot
ll_tc3: PANIC("Unimplemented tc3 interrupt handler")
@@ -195,19 +183,15 @@ ll_reset: li a0,0
/*
* Now call the real handler
*/
-call_real: la t0,IRQ_vectors # delay slot
-
- /*
+call_real: /*
* temporarily disable interrupt
*/
mfc0 t2,CP0_STATUS
and t2,s1
- addu t0,t3
- lw t0,(t0)
- mtc0 t2,CP0_STATUS # delay slot
- jalr t0
- nor s1,zero,s1 # delay slot
+ mtc0 t2,CP0_STATUS
+ jal do_IRQ
+ nor s1,zero,s1
/*
* reenable interrupt
@@ -216,7 +200,7 @@ call_real: la t0,IRQ_vectors # delay slot
or t2,s1
mtc0 t2,CP0_STATUS
- jr v0
+ j ret_from_irq
nop # delay slot
/*