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