1*1da177e4SLinus Torvalds/* 2*1da177e4SLinus Torvalds * This file is subject to the terms and conditions of the GNU General Public 3*1da177e4SLinus Torvalds * License. See the file "COPYING" in the main directory of this archive 4*1da177e4SLinus Torvalds * for more details. 5*1da177e4SLinus Torvalds * 6*1da177e4SLinus Torvalds * Copyright (C) 1995 - 1999 Ralf Baechle 7*1da177e4SLinus Torvalds * Copyright (C) 1999 Silicon Graphics, Inc. 8*1da177e4SLinus Torvalds * 9*1da177e4SLinus Torvalds * Cache error handler 10*1da177e4SLinus Torvalds */ 11*1da177e4SLinus Torvalds#include <asm/asm.h> 12*1da177e4SLinus Torvalds#include <asm/regdef.h> 13*1da177e4SLinus Torvalds#include <asm/mipsregs.h> 14*1da177e4SLinus Torvalds#include <asm/stackframe.h> 15*1da177e4SLinus Torvalds 16*1da177e4SLinus Torvalds/* 17*1da177e4SLinus Torvalds * Game over. Go to the button. Press gently. Swear where allowed by 18*1da177e4SLinus Torvalds * legislation. 19*1da177e4SLinus Torvalds */ 20*1da177e4SLinus Torvalds LEAF(except_vec2_generic) 21*1da177e4SLinus Torvalds .set noreorder 22*1da177e4SLinus Torvalds .set noat 23*1da177e4SLinus Torvalds .set mips0 24*1da177e4SLinus Torvalds /* 25*1da177e4SLinus Torvalds * This is a very bad place to be. Our cache error 26*1da177e4SLinus Torvalds * detection has triggered. If we have write-back data 27*1da177e4SLinus Torvalds * in the cache, we may not be able to recover. As a 28*1da177e4SLinus Torvalds * first-order desperate measure, turn off KSEG0 cacheing. 29*1da177e4SLinus Torvalds */ 30*1da177e4SLinus Torvalds mfc0 k0,CP0_CONFIG 31*1da177e4SLinus Torvalds li k1,~CONF_CM_CMASK 32*1da177e4SLinus Torvalds and k0,k0,k1 33*1da177e4SLinus Torvalds ori k0,k0,CONF_CM_UNCACHED 34*1da177e4SLinus Torvalds mtc0 k0,CP0_CONFIG 35*1da177e4SLinus Torvalds /* Give it a few cycles to sink in... */ 36*1da177e4SLinus Torvalds nop 37*1da177e4SLinus Torvalds nop 38*1da177e4SLinus Torvalds nop 39*1da177e4SLinus Torvalds 40*1da177e4SLinus Torvalds j cache_parity_error 41*1da177e4SLinus Torvalds nop 42*1da177e4SLinus Torvalds END(except_vec2_generic) 43