Back to home page

OSCL-LXR

 
 

    


0001 /*
0002  * This file is subject to the terms and conditions of the GNU General Public
0003  * License.  See the file "COPYING" in the main directory of this archive
0004  * for more details.
0005  *
0006  * Copyright (C) 1995 - 1999 Ralf Baechle
0007  * Copyright (C) 1999 Silicon Graphics, Inc.
0008  *
0009  * Cache error handler
0010  */
0011 #include <asm/asm.h>
0012 #include <asm/regdef.h>
0013 #include <asm/mipsregs.h>
0014 #include <asm/stackframe.h>
0015 
0016 /*
0017  * Game over.  Go to the button.  Press gently.  Swear where allowed by
0018  * legislation.
0019  */
0020     LEAF(except_vec2_generic)
0021     .set    noreorder
0022     .set    noat
0023     .set    mips0
0024     /*
0025      * This is a very bad place to be.  Our cache error
0026      * detection has triggered.  If we have write-back data
0027      * in the cache, we may not be able to recover.  As a
0028      * first-order desperate measure, turn off KSEG0 cacheing.
0029      */
0030     mfc0    k0,CP0_CONFIG
0031     li  k1,~CONF_CM_CMASK
0032     and k0,k0,k1
0033     ori k0,k0,CONF_CM_UNCACHED
0034     mtc0    k0,CP0_CONFIG
0035     /* Give it a few cycles to sink in... */
0036     nop
0037     nop
0038     nop
0039 
0040     j   cache_parity_error
0041     nop
0042     END(except_vec2_generic)