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
6 * Copyright (C) 2002, 2004, 2007 by Ralf Baechle
7 * Copyright (C) 2007 Maciej W. Rozycki
13 * Work around certain R4000 CPU errata (as implemented by GCC):
15 * - A double-word or a variable shift may give an incorrect result
16 * if executed immediately after starting an integer division:
17 * "MIPS R4000PC/SC Errata, Processor Revision 2.2 and 3.0",
19 * "MIPS R4000MC Errata, Processor Revision 2.2 and 3.0", erratum
22 * - A double-word or a variable shift may give an incorrect result
23 * if executed while an integer multiplication is in progress:
24 * "MIPS R4000PC/SC Errata, Processor Revision 2.2 and 3.0",
27 * - An integer division may give an incorrect result if started in
28 * a delay slot of a taken branch or a jump:
29 * "MIPS R4000PC/SC Errata, Processor Revision 2.2 and 3.0",
32 #ifdef CONFIG_CPU_R4000_WORKAROUNDS
39 * Work around certain R4400 CPU errata (as implemented by GCC):
41 * - A double-word or a variable shift may give an incorrect result
42 * if executed immediately after starting an integer division:
43 * "MIPS R4400MC Errata, Processor Revision 1.0", erratum #10
44 * "MIPS R4400MC Errata, Processor Revision 2.0 & 3.0", erratum #4
46 #ifdef CONFIG_CPU_R4400_WORKAROUNDS
53 * Work around the "daddi" and "daddiu" CPU errata:
55 * - The `daddi' instruction fails to trap on overflow.
56 * "MIPS R4000PC/SC Errata, Processor Revision 2.2 and 3.0",
59 * - The `daddiu' instruction can produce an incorrect result.
60 * "MIPS R4000PC/SC Errata, Processor Revision 2.2 and 3.0",
62 * "MIPS R4000MC Errata, Processor Revision 2.2 and 3.0", erratum
64 * "MIPS R4400PC/SC Errata, Processor Revision 1.0", erratum #7
65 * "MIPS R4400MC Errata, Processor Revision 1.0", erratum #5
67 #ifdef CONFIG_CPU_DADDI_WORKAROUNDS
73 #endif /* _ASM_WAR_H */