Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/arch/mips/mips Pass correct exception PC value to cpu_in...
details: https://anonhg.NetBSD.org/src/rev/20870274a734
branches: trunk
changeset: 763022:20870274a734
user: tsutsui <tsutsui%NetBSD.org@localhost>
date: Tue Mar 08 15:12:46 2011 +0000
description:
Pass correct exception PC value to cpu_intr() as mipsX_subr.S does.
Fixes SIGILL on all FPU exceptions on R3000.
XXX: cpu_intr() may require cause value as mentioned in PR port-mips/44639
diffstat:
sys/arch/mips/mips/locore_mips1.S | 8 +++++---
1 files changed, 5 insertions(+), 3 deletions(-)
diffs (43 lines):
diff -r a948d4efe2a4 -r 20870274a734 sys/arch/mips/mips/locore_mips1.S
--- a/sys/arch/mips/mips/locore_mips1.S Tue Mar 08 15:05:40 2011 +0000
+++ b/sys/arch/mips/mips/locore_mips1.S Tue Mar 08 15:12:46 2011 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: locore_mips1.S,v 1.74 2011/03/08 15:05:40 tsutsui Exp $ */
+/* $NetBSD: locore_mips1.S,v 1.75 2011/03/08 15:12:46 tsutsui Exp $ */
/*
* Copyright (c) 1992, 1993
@@ -452,6 +452,7 @@
#if defined(DDB) || defined(DEBUG) || defined(KGDB)
REG_S ra, KERNFRAME_RA(sp) # for debugging
#endif
+ move ta0, ra # save across spl* calls
#ifdef PARANOIA
INT_L s0, CPU_INFO_CPL(s2)
@@ -506,7 +507,7 @@
/*
* Now hard interrupts can be processed.
*/
- move a1, ra # 2nd arg is exception PC
+ move a1, ta0 # 2nd arg is exception PC
move a2, s1 # 3rd arg is status
jal _C_LABEL(cpu_intr) # cpu_intr(ppl, pc, status)
srl a0, s0, 8 # 1st arg is previous pri level
@@ -763,6 +764,7 @@
#ifdef __GP_SUPPORT__
PTR_LA gp, _C_LABEL(_gp) # switch to kernel GP
#endif
+ move ta0, ra # save across spl* calls
/*
* We first need to get to IPL_HIGH so that interrupts are masked.
@@ -797,7 +799,7 @@
/*
* Now hard interrupts can be processed.
*/
- move a1, ra # 2nd arg is exception pc
+ move a1, ta0 # 2nd arg is exception pc
move a2, s1 # 3rd arg is status
jal _C_LABEL(cpu_intr) # cpu_intr(ppl, pc, status)
move a0, s0 # 1st arg is previous pri level
Home |
Main Index |
Thread Index |
Old Index