[xtensa-cvscommit] linux/arch/xtensa/kernel traps.c,1.11,1.12
Brought to you by:
zankel
|
From: <ma...@us...> - 2003-04-01 22:31:30
|
Update of /cvsroot/xtensa/linux/arch/xtensa/kernel
In directory sc8-pr-cvs1:/tmp/cvs-serv798
Modified Files:
traps.c
Log Message:
Add multihit exception handler, to output better debugging data on multihit exceptions.
Index: traps.c
===================================================================
RCS file: /cvsroot/xtensa/linux/arch/xtensa/kernel/traps.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -d -r1.11 -r1.12
*** traps.c 20 Mar 2003 20:49:08 -0000 1.11
--- traps.c 1 Apr 2003 22:31:27 -0000 1.12
***************
*** 6,15 ****
* for more details.
*
* Copyright (C) 1994 - 1999 by Ralf Baechle
* Modified for R3000 by Paul M. Antoine, 1995, 1996
* Complete output from die() by Ulf Carlsson, 1998
* Copyright (C) 1999 Silicon Graphics, Inc.
! * Copyright (C) 2001 - 2002 Tensilica Inc., by Joe Taylor, Kevin Chea,
! * Marc Gauthier, Scott Foehner
*/
--- 6,21 ----
* for more details.
*
+ * Derived from code with the following copyrights:
* Copyright (C) 1994 - 1999 by Ralf Baechle
* Modified for R3000 by Paul M. Antoine, 1995, 1996
* Complete output from die() by Ulf Carlsson, 1998
* Copyright (C) 1999 Silicon Graphics, Inc.
! *
! * Essentially rewritten for the Xtensa architecture port:
! * Copyright (C) 2001 - 2003 Tensilica Inc.
! * Author(s): Joe Taylor <jo...@te..., jo...@ya...>
! * Kevin Chea
! * Marc Gauthier <ma...@te...> <ma...@al...>
! * Scott Foehner <sfo...@ya...>
*/
***************
*** 150,153 ****
--- 156,173 ----
}
+ void do_multihit(struct pt_regs *regs)
+ {
+ extern void dump_all_tlbs(void);
+
+ /*
+ * This should never happen. Fatal.
+ */
+ dump_all_tlbs();
+ panic("Caught %s multihit exception at EXCVADDR=0x%08X - should not happen",
+ ((regs->exccause == XCHAL_EXCCAUSE_ITLB_MULTIHIT) ? "ITLB" : "DTLB"),
+ regs->excvaddr);
+ }
+
+
extern int do_set_xtrtctime(unsigned);
extern rwlock_t xtime_lock;
***************
*** 506,509 ****
--- 526,531 ----
set_c_except_handler (XCHAL_EXCCAUSE_STORE_CACHE_ATTRIBUTE, do_page_fault);
set_c_except_handler (XCHAL_EXCCAUSE_DTLB_PRIVILEGE, do_page_fault);
+ set_c_except_handler (XCHAL_EXCCAUSE_ITLB_MULTIHIT, do_multihit);
+ set_c_except_handler (XCHAL_EXCCAUSE_DTLB_MULTIHIT, do_multihit);
set_c_except_handler (XCHAL_EXCCAUSE_ILLEGAL_INSTRUCTION,
handle_illegal_instruction);
|