root/arch/mips/mm/cex-gen.S
/*
 * This file is subject to the terms and conditions of the GNU General Public
 * License.  See the file "COPYING" in the main directory of this archive
 * for more details.
 *
 * Copyright (C) 1995 - 1999 Ralf Baechle
 * Copyright (C) 1999 Silicon Graphics, Inc.
 *
 * Cache error handler
 */
#include <asm/asm.h>
#include <asm/regdef.h>
#include <asm/mipsregs.h>
#include <asm/stackframe.h>

/*
 * Game over.  Go to the button.  Press gently.  Swear where allowed by
 * legislation.
 */
        LEAF(except_vec2_generic)
        .set    noreorder
        .set    noat
        .set    mips0
        /*
         * This is a very bad place to be.  Our cache error
         * detection has triggered.  If we have write-back data
         * in the cache, we may not be able to recover.  As a
         * first-order desperate measure, turn off KSEG0 caching.
         */
        mfc0    k0,CP0_CONFIG
        li      k1,~CONF_CM_CMASK
        and     k0,k0,k1
        ori     k0,k0,CONF_CM_UNCACHED
        mtc0    k0,CP0_CONFIG
        /* Give it a few cycles to sink in... */
        nop
        nop
        nop

        j       cache_parity_error
        nop
        END(except_vec2_generic)