| /* |
| * 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) 2002, 2004, 2007 by Ralf Baechle |
| * Copyright (C) 2007 Maciej W. Rozycki |
| */ |
| #ifndef _ASM_WAR_H |
| #define _ASM_WAR_H |
| |
| /* |
| * Work around certain R4000 CPU errata (as implemented by GCC): |
| * |
| * - A double-word or a variable shift may give an incorrect result |
| * if executed immediately after starting an integer division: |
| * "MIPS R4000PC/SC Errata, Processor Revision 2.2 and 3.0", |
| * erratum #28 |
| * "MIPS R4000MC Errata, Processor Revision 2.2 and 3.0", erratum |
| * #19 |
| * |
| * - A double-word or a variable shift may give an incorrect result |
| * if executed while an integer multiplication is in progress: |
| * "MIPS R4000PC/SC Errata, Processor Revision 2.2 and 3.0", |
| * errata #16 & #28 |
| * |
| * - An integer division may give an incorrect result if started in |
| * a delay slot of a taken branch or a jump: |
| * "MIPS R4000PC/SC Errata, Processor Revision 2.2 and 3.0", |
| * erratum #52 |
| */ |
| #ifdef CONFIG_CPU_R4000_WORKAROUNDS |
| #define R4000_WAR 1 |
| #else |
| #define R4000_WAR 0 |
| #endif |
| |
| /* |
| * Work around certain R4400 CPU errata (as implemented by GCC): |
| * |
| * - A double-word or a variable shift may give an incorrect result |
| * if executed immediately after starting an integer division: |
| * "MIPS R4400MC Errata, Processor Revision 1.0", erratum #10 |
| * "MIPS R4400MC Errata, Processor Revision 2.0 & 3.0", erratum #4 |
| */ |
| #ifdef CONFIG_CPU_R4400_WORKAROUNDS |
| #define R4400_WAR 1 |
| #else |
| #define R4400_WAR 0 |
| #endif |
| |
| /* |
| * Work around the "daddi" and "daddiu" CPU errata: |
| * |
| * - The `daddi' instruction fails to trap on overflow. |
| * "MIPS R4000PC/SC Errata, Processor Revision 2.2 and 3.0", |
| * erratum #23 |
| * |
| * - The `daddiu' instruction can produce an incorrect result. |
| * "MIPS R4000PC/SC Errata, Processor Revision 2.2 and 3.0", |
| * erratum #41 |
| * "MIPS R4000MC Errata, Processor Revision 2.2 and 3.0", erratum |
| * #15 |
| * "MIPS R4400PC/SC Errata, Processor Revision 1.0", erratum #7 |
| * "MIPS R4400MC Errata, Processor Revision 1.0", erratum #5 |
| */ |
| #ifdef CONFIG_CPU_DADDI_WORKAROUNDS |
| #define DADDI_WAR 1 |
| #else |
| #define DADDI_WAR 0 |
| #endif |
| |
| #endif /* _ASM_WAR_H */ |