Linux Audio

Check our new training course

Loading...
Note: File does not exist in v6.8.
 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, 2004, 2007 by Ralf Baechle
 7 * Copyright (C) 2007  Maciej W. Rozycki
 8 */
 9#ifndef _ASM_WAR_H
10#define _ASM_WAR_H
11
12/*
13 * Work around certain R4000 CPU errata (as implemented by GCC):
14 *
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",
18 *   erratum #28
19 *   "MIPS R4000MC Errata, Processor Revision 2.2 and 3.0", erratum
20 *   #19
21 *
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",
25 *   errata #16 & #28
26 *
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",
30 *   erratum #52
31 */
32#ifdef CONFIG_CPU_R4000_WORKAROUNDS
33#define R4000_WAR 1
34#else
35#define R4000_WAR 0
36#endif
37
38/*
39 * Work around certain R4400 CPU errata (as implemented by GCC):
40 *
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
45 */
46#ifdef CONFIG_CPU_R4400_WORKAROUNDS
47#define R4400_WAR 1
48#else
49#define R4400_WAR 0
50#endif
51
52/*
53 * Work around the "daddi" and "daddiu" CPU errata:
54 *
55 * - The `daddi' instruction fails to trap on overflow.
56 *   "MIPS R4000PC/SC Errata, Processor Revision 2.2 and 3.0",
57 *   erratum #23
58 *
59 * - The `daddiu' instruction can produce an incorrect result.
60 *   "MIPS R4000PC/SC Errata, Processor Revision 2.2 and 3.0",
61 *   erratum #41
62 *   "MIPS R4000MC Errata, Processor Revision 2.2 and 3.0", erratum
63 *   #15
64 *   "MIPS R4400PC/SC Errata, Processor Revision 1.0", erratum #7
65 *   "MIPS R4400MC Errata, Processor Revision 1.0", erratum #5
66 */
67#ifdef CONFIG_CPU_DADDI_WORKAROUNDS
68#define DADDI_WAR 1
69#else
70#define DADDI_WAR 0
71#endif
72
73#endif /* _ASM_WAR_H */