war.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:2k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  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) 2002 by Ralf Baechle
  7.  */
  8. #ifndef _ASM_WAR_H
  9. #define _ASM_WAR_H
  10. #include <linux/config.h>
  11. /*
  12.  * Pleassures of the R4600 V1.x.  Cite from the IDT R4600 V1.7 errata:
  13.  *
  14.  *  18. The CACHE instructions Hit_Writeback_Invalidate_D, Hit_Writeback_D,
  15.  *      Hit_Invalidate_D and Create_Dirty_Excl_D should only be
  16.  *      executed if there is no other dcache activity. If the dcache is
  17.  *      accessed for another instruction immeidately preceding when these
  18.  *      cache instructions are executing, it is possible that the dcache
  19.  *      tag match outputs used by these cache instructions will be
  20.  *      incorrect. These cache instructions should be preceded by at least
  21.  *      four instructions that are not any kind of load or store
  22.  *      instruction.
  23.  *
  24.  *      This is not allowed:    lw
  25.  *                              nop
  26.  *                              nop
  27.  *                              nop
  28.  *                              cache       Hit_Writeback_Invalidate_D
  29.  *
  30.  *      This is allowed:        lw
  31.  *                              nop
  32.  *                              nop
  33.  *                              nop
  34.  *                              nop
  35.  *                              cache       Hit_Writeback_Invalidate_D
  36.  */
  37. #define R4600_V1_HIT_DCACHE_WAR
  38. /*
  39.  * Writeback and invalidate the primary cache dcache before DMA.
  40.  *
  41.  * R4600 v2.0 bug: "The CACHE instructions Hit_Writeback_Inv_D,
  42.  * Hit_Writeback_D, Hit_Invalidate_D and Create_Dirty_Exclusive_D will only
  43.  * operate correctly if the internal data cache refill buffer is empty.  These
  44.  * CACHE instructions should be separated from any potential data cache miss
  45.  * by a load instruction to an uncached address to empty the response buffer."
  46.  * (Revision 2.0 device errata from IDT available on http://www.idt.com/
  47.  * in .pdf format.)
  48.  */
  49. #define R4600_V2_HIT_CACHEOP_WAR
  50. #ifdef CONFIG_CPU_R5432
  51. /*
  52.  * When an interrupt happens on a CP0 register read instruction, CPU may
  53.  * lock up or read corrupted values of CP0 registers after it enters
  54.  * the exception handler.
  55.  *
  56.  * This workaround makes sure that we read a "safe" CP0 register as the
  57.  * first thing in the exception handler, which breaks one of the
  58.  * pre-conditions for this problem.
  59.  */
  60. #define R5432_CP0_INTERRUPT_WAR
  61. #endif
  62. #endif /* _ASM_WAR_H */