summaryrefslogtreecommitdiffstats
path: root/arch/mips/kernel/entry.S
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/kernel/entry.S
parentfd095d09f2d475dc2e8599b1b8bae1cd65e91685 (diff)
Part #2 merging back my changes ...
Diffstat (limited to 'arch/mips/kernel/entry.S')
-rw-r--r--arch/mips/kernel/entry.S77
1 files changed, 6 insertions, 71 deletions
diff --git a/arch/mips/kernel/entry.S b/arch/mips/kernel/entry.S
index c955b964e..2e286da80 100644
--- a/arch/mips/kernel/entry.S
+++ b/arch/mips/kernel/entry.S
@@ -7,7 +7,7 @@
*
* Copyright (C) 1994, 1995 by Ralf Baechle
*
- * $Id: entry.S,v 1.2 1997/08/11 04:21:31 ralf Exp $
+ * $Id: entry.S,v 1.4 1997/09/20 19:20:13 root Exp $
*/
/*
@@ -50,6 +50,7 @@ reschedule: jal schedule
nop
EXPORT(ret_from_sys_call)
+EXPORT(ret_from_irq)
lw t0,bh_mask
lw t1,bh_active # unused delay slot
and t0,t1
@@ -75,64 +76,15 @@ EXPORT(ret_from_sys_call)
jal do_signal
move a1,sp
- .set noat
-EXPORT(return)
+EXPORT(return) .set noat
RESTORE_ALL
eret
.set at
/*
- * Beware: interrupt, fast_interrupt and bad_interrupt have unusual
- * calling conventions to speedup the mess.
- *
- * a0 - interrupt number
- * s2 - destroyed
- * return values:
- * v0 - return routine
+ * Common spurious interrupt handler.
*/
.text
- .set at
- .align 5
-NESTED(interrupt, PT_SIZE, sp)
- move s2,ra
- mfc0 t0,CP0_STATUS # enable IRQs
- ori t0,0x1f
- xori t0,0x1e
- mtc0 t0,CP0_STATUS
-
- jal do_IRQ
- move a1,sp
-
- mfc0 t0,CP0_STATUS # disable IRQs
- ori t0,1
- xori t0,1
- mtc0 t0,CP0_STATUS
- .set reorder
- la v0,ret_from_sys_call
- jr s2
- .set noreorder
- END(interrupt)
-
- .align 5
-NESTED(fast_interrupt, PT_SIZE, sp)
- move s2,ra
- jal do_fast_IRQ
- nop
-
- .set reorder
- la v0,return
- jr s2
- .set noreorder
- END(fast_interrupt)
-
- /*
- * Don't return & unblock the pic
- */
-LEAF(bad_interrupt)
- j return
- END(bad_interrupt)
-
- .text
.align 5
LEAF(spurious_interrupt)
/*
@@ -141,10 +93,8 @@ LEAF(spurious_interrupt)
*/
lui t1,%hi(spurious_count)
lw t0,%lo(spurious_count)(t1)
- la v0,return
addiu t0,1
-
- jr ra
+ j ret_from_irq
sw t0,%lo(spurious_count)(t1)
END(spurious_interrupt)
@@ -164,7 +114,7 @@ LEAF(spurious_interrupt)
REG_S t0,PT_BVADDR(sp);
#define __BUILD_silent(exception)
-#define fmt "Got %s at %016Lx.\n"
+#define fmt "Got %s at %08lx.\n"
#define __BUILD_verbose(exception) \
la a1,8f; \
@@ -215,21 +165,6 @@ EXPORT(exception_count_##exception); \
BUILD_HANDLER(reserved,reserved,none,verbose) /* others */
/*
- * Exception handler table with 32 entries.
- * This might be extended to handle software exceptions
- */
- .bss
- .align PTRLOG
-EXPORT(exception_handlers)
- .fill 32,PTRSIZE,0
-
-/*
- * Interrupt handler table with 32 entries.
- */
-EXPORT(IRQ_vectors)
- .fill 32,PTRSIZE,0
-
-/*
* Table of syscalls
*/
.data