xref: /openbmc/linux/arch/mips/include/asm/cpu.h (revision 71a8b7d86c0dbdd1a278e91afcefc9de4f819ec5)
1384740dcSRalf Baechle /*
2384740dcSRalf Baechle  * cpu.h: Values of the PRId register used to match up
3384740dcSRalf Baechle  *	  various MIPS cpu types.
4384740dcSRalf Baechle  *
579add627SJustin P. Mattock  * Copyright (C) 1996 David S. Miller (davem@davemloft.net)
6384740dcSRalf Baechle  * Copyright (C) 2004  Maciej W. Rozycki
7384740dcSRalf Baechle  */
8384740dcSRalf Baechle #ifndef _ASM_CPU_H
9384740dcSRalf Baechle #define _ASM_CPU_H
10384740dcSRalf Baechle 
11384740dcSRalf Baechle /* Assigned Company values for bits 23:16 of the PRId Register
12384740dcSRalf Baechle    (CP0 register 15, select 0).	 As of the MIPS32 and MIPS64 specs from
13384740dcSRalf Baechle    MTI, the PRId register is defined in this (backwards compatible)
14384740dcSRalf Baechle    way:
15384740dcSRalf Baechle 
16384740dcSRalf Baechle   +----------------+----------------+----------------+----------------+
17384740dcSRalf Baechle   | Company Options| Company ID	    | Processor ID   | Revision	      |
18384740dcSRalf Baechle   +----------------+----------------+----------------+----------------+
19384740dcSRalf Baechle    31		 24 23		  16 15		    8 7
20384740dcSRalf Baechle 
21384740dcSRalf Baechle    I don't have docs for all the previous processors, but my impression is
22384740dcSRalf Baechle    that bits 16-23 have been 0 for all MIPS processors before the MIPS32/64
23384740dcSRalf Baechle    spec.
24384740dcSRalf Baechle */
25384740dcSRalf Baechle 
26384740dcSRalf Baechle #define PRID_COMP_LEGACY	0x000000
27384740dcSRalf Baechle #define PRID_COMP_MIPS		0x010000
28384740dcSRalf Baechle #define PRID_COMP_BROADCOM	0x020000
29384740dcSRalf Baechle #define PRID_COMP_ALCHEMY	0x030000
30384740dcSRalf Baechle #define PRID_COMP_SIBYTE	0x040000
31384740dcSRalf Baechle #define PRID_COMP_SANDCRAFT	0x050000
32384740dcSRalf Baechle #define PRID_COMP_NXP		0x060000
33384740dcSRalf Baechle #define PRID_COMP_TOSHIBA	0x070000
34384740dcSRalf Baechle #define PRID_COMP_LSI		0x080000
35384740dcSRalf Baechle #define PRID_COMP_LEXRA		0x0b0000
36a7117c6bSJayachandran C #define PRID_COMP_NETLOGIC	0x0c0000
370dd4781bSDavid Daney #define PRID_COMP_CAVIUM	0x0d0000
3883ccf69dSLars-Peter Clausen #define PRID_COMP_INGENIC	0xd00000
39384740dcSRalf Baechle 
40384740dcSRalf Baechle /*
41384740dcSRalf Baechle  * Assigned values for the product ID register.	 In order to detect a
42384740dcSRalf Baechle  * certain CPU type exactly eventually additional registers may need to
43384740dcSRalf Baechle  * be examined.	 These are valid when 23:16 == PRID_COMP_LEGACY
44384740dcSRalf Baechle  */
45384740dcSRalf Baechle #define PRID_IMP_R2000		0x0100
46384740dcSRalf Baechle #define PRID_IMP_AU1_REV1	0x0100
47384740dcSRalf Baechle #define PRID_IMP_AU1_REV2	0x0200
48384740dcSRalf Baechle #define PRID_IMP_R3000		0x0200		/* Same as R2000A  */
49384740dcSRalf Baechle #define PRID_IMP_R6000		0x0300		/* Same as R3000A  */
50384740dcSRalf Baechle #define PRID_IMP_R4000		0x0400
51384740dcSRalf Baechle #define PRID_IMP_R6000A		0x0600
52384740dcSRalf Baechle #define PRID_IMP_R10000		0x0900
53384740dcSRalf Baechle #define PRID_IMP_R4300		0x0b00
54384740dcSRalf Baechle #define PRID_IMP_VR41XX		0x0c00
55384740dcSRalf Baechle #define PRID_IMP_R12000		0x0e00
56384740dcSRalf Baechle #define PRID_IMP_R14000		0x0f00
57384740dcSRalf Baechle #define PRID_IMP_R8000		0x1000
58384740dcSRalf Baechle #define PRID_IMP_PR4450		0x1200
59384740dcSRalf Baechle #define PRID_IMP_R4600		0x2000
60384740dcSRalf Baechle #define PRID_IMP_R4700		0x2100
61384740dcSRalf Baechle #define PRID_IMP_TX39		0x2200
62384740dcSRalf Baechle #define PRID_IMP_R4640		0x2200
63384740dcSRalf Baechle #define PRID_IMP_R4650		0x2200		/* Same as R4640 */
64384740dcSRalf Baechle #define PRID_IMP_R5000		0x2300
65384740dcSRalf Baechle #define PRID_IMP_TX49		0x2d00
66384740dcSRalf Baechle #define PRID_IMP_SONIC		0x2400
67384740dcSRalf Baechle #define PRID_IMP_MAGIC		0x2500
68384740dcSRalf Baechle #define PRID_IMP_RM7000		0x2700
69384740dcSRalf Baechle #define PRID_IMP_NEVADA		0x2800		/* RM5260 ??? */
70384740dcSRalf Baechle #define PRID_IMP_RM9000		0x3400
71384740dcSRalf Baechle #define PRID_IMP_LOONGSON1	0x4200
72384740dcSRalf Baechle #define PRID_IMP_R5432		0x5400
73384740dcSRalf Baechle #define PRID_IMP_R5500		0x5500
74384740dcSRalf Baechle #define PRID_IMP_LOONGSON2	0x6300
75384740dcSRalf Baechle 
76384740dcSRalf Baechle #define PRID_IMP_UNKNOWN	0xff00
77384740dcSRalf Baechle 
78384740dcSRalf Baechle /*
79384740dcSRalf Baechle  * These are the PRID's for when 23:16 == PRID_COMP_MIPS
80384740dcSRalf Baechle  */
81384740dcSRalf Baechle 
82384740dcSRalf Baechle #define PRID_IMP_4KC		0x8000
83384740dcSRalf Baechle #define PRID_IMP_5KC		0x8100
84384740dcSRalf Baechle #define PRID_IMP_20KC		0x8200
85384740dcSRalf Baechle #define PRID_IMP_4KEC		0x8400
86384740dcSRalf Baechle #define PRID_IMP_4KSC		0x8600
87384740dcSRalf Baechle #define PRID_IMP_25KF		0x8800
88384740dcSRalf Baechle #define PRID_IMP_5KE		0x8900
89384740dcSRalf Baechle #define PRID_IMP_4KECR2		0x9000
90384740dcSRalf Baechle #define PRID_IMP_4KEMPR2	0x9100
91384740dcSRalf Baechle #define PRID_IMP_4KSD		0x9200
92384740dcSRalf Baechle #define PRID_IMP_24K		0x9300
93384740dcSRalf Baechle #define PRID_IMP_34K		0x9500
94384740dcSRalf Baechle #define PRID_IMP_24KE		0x9600
95384740dcSRalf Baechle #define PRID_IMP_74K		0x9700
96384740dcSRalf Baechle #define PRID_IMP_1004K		0x9900
97006a851bSSteven J. Hill #define PRID_IMP_1074K		0x9a00
98113c62d9SSteven J. Hill #define PRID_IMP_M14KC		0x9c00
99f8fa4811SSteven J. Hill #define PRID_IMP_M14KEC		0x9e00
100384740dcSRalf Baechle 
101384740dcSRalf Baechle /*
102384740dcSRalf Baechle  * These are the PRID's for when 23:16 == PRID_COMP_SIBYTE
103384740dcSRalf Baechle  */
104384740dcSRalf Baechle 
105384740dcSRalf Baechle #define PRID_IMP_SB1		0x0100
106384740dcSRalf Baechle #define PRID_IMP_SB1A		0x1100
107384740dcSRalf Baechle 
108384740dcSRalf Baechle /*
109384740dcSRalf Baechle  * These are the PRID's for when 23:16 == PRID_COMP_SANDCRAFT
110384740dcSRalf Baechle  */
111384740dcSRalf Baechle 
112384740dcSRalf Baechle #define PRID_IMP_SR71000	0x0400
113384740dcSRalf Baechle 
114384740dcSRalf Baechle /*
115384740dcSRalf Baechle  * These are the PRID's for when 23:16 == PRID_COMP_BROADCOM
116384740dcSRalf Baechle  */
117384740dcSRalf Baechle 
118190fca3eSKevin Cernekee #define PRID_IMP_BMIPS32_REV4	0x4000
119190fca3eSKevin Cernekee #define PRID_IMP_BMIPS32_REV8	0x8000
120602977b0SKevin Cernekee #define PRID_IMP_BMIPS3300	0x9000
121602977b0SKevin Cernekee #define PRID_IMP_BMIPS3300_ALT	0x9100
122602977b0SKevin Cernekee #define PRID_IMP_BMIPS3300_BUG	0x0000
123602977b0SKevin Cernekee #define PRID_IMP_BMIPS43XX	0xa000
124602977b0SKevin Cernekee #define PRID_IMP_BMIPS5000	0x5a00
125602977b0SKevin Cernekee 
126602977b0SKevin Cernekee #define PRID_REV_BMIPS4380_LO	0x0040
127602977b0SKevin Cernekee #define PRID_REV_BMIPS4380_HI	0x006f
128384740dcSRalf Baechle 
129384740dcSRalf Baechle /*
1300dd4781bSDavid Daney  * These are the PRID's for when 23:16 == PRID_COMP_CAVIUM
1310dd4781bSDavid Daney  */
1320dd4781bSDavid Daney 
1330dd4781bSDavid Daney #define PRID_IMP_CAVIUM_CN38XX 0x0000
1340dd4781bSDavid Daney #define PRID_IMP_CAVIUM_CN31XX 0x0100
1350dd4781bSDavid Daney #define PRID_IMP_CAVIUM_CN30XX 0x0200
1360dd4781bSDavid Daney #define PRID_IMP_CAVIUM_CN58XX 0x0300
1370dd4781bSDavid Daney #define PRID_IMP_CAVIUM_CN56XX 0x0400
1380dd4781bSDavid Daney #define PRID_IMP_CAVIUM_CN50XX 0x0600
1390dd4781bSDavid Daney #define PRID_IMP_CAVIUM_CN52XX 0x0700
1401584d7f2SDavid Daney #define PRID_IMP_CAVIUM_CN63XX 0x9000
141074ef0d2SDavid Daney #define PRID_IMP_CAVIUM_CN68XX 0x9100
142074ef0d2SDavid Daney #define PRID_IMP_CAVIUM_CN66XX 0x9200
143074ef0d2SDavid Daney #define PRID_IMP_CAVIUM_CN61XX 0x9300
144*71a8b7d8SDavid Daney #define PRID_IMP_CAVIUM_CNF71XX 0x9400
145*71a8b7d8SDavid Daney #define PRID_IMP_CAVIUM_CN78XX 0x9500
146*71a8b7d8SDavid Daney #define PRID_IMP_CAVIUM_CN70XX 0x9600
1470dd4781bSDavid Daney 
1480dd4781bSDavid Daney /*
14983ccf69dSLars-Peter Clausen  * These are the PRID's for when 23:16 == PRID_COMP_INGENIC
15083ccf69dSLars-Peter Clausen  */
15183ccf69dSLars-Peter Clausen 
15283ccf69dSLars-Peter Clausen #define PRID_IMP_JZRISC	       0x0200
15383ccf69dSLars-Peter Clausen 
15483ccf69dSLars-Peter Clausen /*
155a7117c6bSJayachandran C  * These are the PRID's for when 23:16 == PRID_COMP_NETLOGIC
156a7117c6bSJayachandran C  */
157a7117c6bSJayachandran C #define PRID_IMP_NETLOGIC_XLR732	0x0000
158a7117c6bSJayachandran C #define PRID_IMP_NETLOGIC_XLR716	0x0200
159a7117c6bSJayachandran C #define PRID_IMP_NETLOGIC_XLR532	0x0900
160a7117c6bSJayachandran C #define PRID_IMP_NETLOGIC_XLR308	0x0600
161a7117c6bSJayachandran C #define PRID_IMP_NETLOGIC_XLR532C	0x0800
162a7117c6bSJayachandran C #define PRID_IMP_NETLOGIC_XLR516C	0x0a00
163a7117c6bSJayachandran C #define PRID_IMP_NETLOGIC_XLR508C	0x0b00
164a7117c6bSJayachandran C #define PRID_IMP_NETLOGIC_XLR308C	0x0f00
165a7117c6bSJayachandran C #define PRID_IMP_NETLOGIC_XLS608	0x8000
166a7117c6bSJayachandran C #define PRID_IMP_NETLOGIC_XLS408	0x8800
167a7117c6bSJayachandran C #define PRID_IMP_NETLOGIC_XLS404	0x8c00
168a7117c6bSJayachandran C #define PRID_IMP_NETLOGIC_XLS208	0x8e00
169a7117c6bSJayachandran C #define PRID_IMP_NETLOGIC_XLS204	0x8f00
170a7117c6bSJayachandran C #define PRID_IMP_NETLOGIC_XLS108	0xce00
171a7117c6bSJayachandran C #define PRID_IMP_NETLOGIC_XLS104	0xcf00
172a7117c6bSJayachandran C #define PRID_IMP_NETLOGIC_XLS616B	0x4000
173a7117c6bSJayachandran C #define PRID_IMP_NETLOGIC_XLS608B	0x4a00
174a7117c6bSJayachandran C #define PRID_IMP_NETLOGIC_XLS416B	0x4400
175a7117c6bSJayachandran C #define PRID_IMP_NETLOGIC_XLS412B	0x4c00
176a7117c6bSJayachandran C #define PRID_IMP_NETLOGIC_XLS408B	0x4e00
177a7117c6bSJayachandran C #define PRID_IMP_NETLOGIC_XLS404B	0x4f00
178809f36c6SManuel Lauss #define PRID_IMP_NETLOGIC_AU13XX	0x8000
179a7117c6bSJayachandran C 
1802aa54b20SJayachandran C #define PRID_IMP_NETLOGIC_XLP8XX	0x1000
1812aa54b20SJayachandran C #define PRID_IMP_NETLOGIC_XLP3XX	0x1100
182a7117c6bSJayachandran C 
183a7117c6bSJayachandran C /*
184384740dcSRalf Baechle  * Definitions for 7:0 on legacy processors
185384740dcSRalf Baechle  */
186384740dcSRalf Baechle 
187384740dcSRalf Baechle #define PRID_REV_MASK		0x00ff
188384740dcSRalf Baechle 
189384740dcSRalf Baechle #define PRID_REV_TX4927		0x0022
190384740dcSRalf Baechle #define PRID_REV_TX4937		0x0030
191384740dcSRalf Baechle #define PRID_REV_R4400		0x0040
192384740dcSRalf Baechle #define PRID_REV_R3000A		0x0030
193384740dcSRalf Baechle #define PRID_REV_R3000		0x0020
194384740dcSRalf Baechle #define PRID_REV_R2000A		0x0010
195384740dcSRalf Baechle #define PRID_REV_TX3912		0x0010
196384740dcSRalf Baechle #define PRID_REV_TX3922		0x0030
197384740dcSRalf Baechle #define PRID_REV_TX3927		0x0040
198384740dcSRalf Baechle #define PRID_REV_VR4111		0x0050
199384740dcSRalf Baechle #define PRID_REV_VR4181		0x0050	/* Same as VR4111 */
200384740dcSRalf Baechle #define PRID_REV_VR4121		0x0060
201384740dcSRalf Baechle #define PRID_REV_VR4122		0x0070
202384740dcSRalf Baechle #define PRID_REV_VR4181A	0x0070	/* Same as VR4122 */
203384740dcSRalf Baechle #define PRID_REV_VR4130		0x0080
204384740dcSRalf Baechle #define PRID_REV_34K_V1_0_2	0x0022
2052fa36399SKelvin Cheung #define PRID_REV_LOONGSON1B	0x0020
206f8ede0f7SWu Zhangjin #define PRID_REV_LOONGSON2E	0x0002
207f8ede0f7SWu Zhangjin #define PRID_REV_LOONGSON2F	0x0003
208384740dcSRalf Baechle 
209384740dcSRalf Baechle /*
210384740dcSRalf Baechle  * Older processors used to encode processor version and revision in two
211384740dcSRalf Baechle  * 4-bit bitfields, the 4K seems to simply count up and even newer MTI cores
212384740dcSRalf Baechle  * have switched to use the 8-bits as 3:3:2 bitfield with the last field as
213384740dcSRalf Baechle  * the patch number.  *ARGH*
214384740dcSRalf Baechle  */
215384740dcSRalf Baechle #define PRID_REV_ENCODE_44(ver, rev)					\
216384740dcSRalf Baechle 	((ver) << 4 | (rev))
217384740dcSRalf Baechle #define PRID_REV_ENCODE_332(ver, rev, patch)				\
218384740dcSRalf Baechle 	((ver) << 5 | (rev) << 2 | (patch))
219384740dcSRalf Baechle 
220384740dcSRalf Baechle /*
221384740dcSRalf Baechle  * FPU implementation/revision register (CP1 control register 0).
222384740dcSRalf Baechle  *
223384740dcSRalf Baechle  * +---------------------------------+----------------+----------------+
224384740dcSRalf Baechle  * | 0				     | Implementation | Revision       |
225384740dcSRalf Baechle  * +---------------------------------+----------------+----------------+
226384740dcSRalf Baechle  *  31				   16 15	     8 7	      0
227384740dcSRalf Baechle  */
228384740dcSRalf Baechle 
229384740dcSRalf Baechle #define FPIR_IMP_NONE		0x0000
230384740dcSRalf Baechle 
231384740dcSRalf Baechle enum cpu_type_enum {
232384740dcSRalf Baechle 	CPU_UNKNOWN,
233384740dcSRalf Baechle 
234384740dcSRalf Baechle 	/*
235384740dcSRalf Baechle 	 * R2000 class processors
236384740dcSRalf Baechle 	 */
237384740dcSRalf Baechle 	CPU_R2000, CPU_R3000, CPU_R3000A, CPU_R3041, CPU_R3051, CPU_R3052,
238384740dcSRalf Baechle 	CPU_R3081, CPU_R3081E,
239384740dcSRalf Baechle 
240384740dcSRalf Baechle 	/*
241384740dcSRalf Baechle 	 * R6000 class processors
242384740dcSRalf Baechle 	 */
243384740dcSRalf Baechle 	CPU_R6000, CPU_R6000A,
244384740dcSRalf Baechle 
245384740dcSRalf Baechle 	/*
246384740dcSRalf Baechle 	 * R4000 class processors
247384740dcSRalf Baechle 	 */
248384740dcSRalf Baechle 	CPU_R4000PC, CPU_R4000SC, CPU_R4000MC, CPU_R4200, CPU_R4300, CPU_R4310,
249384740dcSRalf Baechle 	CPU_R4400PC, CPU_R4400SC, CPU_R4400MC, CPU_R4600, CPU_R4640, CPU_R4650,
250fb2b1dbaSRalf Baechle 	CPU_R4700, CPU_R5000, CPU_R5500, CPU_NEVADA, CPU_R5432, CPU_R10000,
251fb2b1dbaSRalf Baechle 	CPU_R12000, CPU_R14000, CPU_VR41XX, CPU_VR4111, CPU_VR4121, CPU_VR4122,
252fb2b1dbaSRalf Baechle 	CPU_VR4131, CPU_VR4133, CPU_VR4181, CPU_VR4181A, CPU_RM7000,
253384740dcSRalf Baechle 	CPU_SR71000, CPU_RM9000, CPU_TX49XX,
254384740dcSRalf Baechle 
255384740dcSRalf Baechle 	/*
256384740dcSRalf Baechle 	 * R8000 class processors
257384740dcSRalf Baechle 	 */
258384740dcSRalf Baechle 	CPU_R8000,
259384740dcSRalf Baechle 
260384740dcSRalf Baechle 	/*
261384740dcSRalf Baechle 	 * TX3900 class processors
262384740dcSRalf Baechle 	 */
263384740dcSRalf Baechle 	CPU_TX3912, CPU_TX3922, CPU_TX3927,
264384740dcSRalf Baechle 
265384740dcSRalf Baechle 	/*
266384740dcSRalf Baechle 	 * MIPS32 class processors
267384740dcSRalf Baechle 	 */
268384740dcSRalf Baechle 	CPU_4KC, CPU_4KEC, CPU_4KSC, CPU_24K, CPU_34K, CPU_1004K, CPU_74K,
269602977b0SKevin Cernekee 	CPU_ALCHEMY, CPU_PR4450, CPU_BMIPS32, CPU_BMIPS3300, CPU_BMIPS4350,
2702fa36399SKelvin Cheung 	CPU_BMIPS4380, CPU_BMIPS5000, CPU_JZRISC, CPU_LOONGSON1, CPU_M14KC,
271f8fa4811SSteven J. Hill 	CPU_M14KEC,
272384740dcSRalf Baechle 
273384740dcSRalf Baechle 	/*
274384740dcSRalf Baechle 	 * MIPS64 class processors
275384740dcSRalf Baechle 	 */
27678d4803fSLeonid Yegoshin 	CPU_5KC, CPU_5KE, CPU_20KC, CPU_25KF, CPU_SB1, CPU_SB1A, CPU_LOONGSON2,
2771584d7f2SDavid Daney 	CPU_CAVIUM_OCTEON, CPU_CAVIUM_OCTEON_PLUS, CPU_CAVIUM_OCTEON2,
278*71a8b7d8SDavid Daney 	CPU_CAVIUM_OCTEON3, CPU_XLR, CPU_XLP,
279384740dcSRalf Baechle 
280384740dcSRalf Baechle 	CPU_LAST
281384740dcSRalf Baechle };
282384740dcSRalf Baechle 
283384740dcSRalf Baechle 
284384740dcSRalf Baechle /*
285384740dcSRalf Baechle  * ISA Level encodings
286384740dcSRalf Baechle  *
287384740dcSRalf Baechle  */
2881990e542SRalf Baechle #define MIPS_CPU_ISA_II		0x00000001
2891990e542SRalf Baechle #define MIPS_CPU_ISA_III	0x00000002
2901990e542SRalf Baechle #define MIPS_CPU_ISA_IV		0x00000004
2911990e542SRalf Baechle #define MIPS_CPU_ISA_V		0x00000008
2921990e542SRalf Baechle #define MIPS_CPU_ISA_M32R1	0x00000010
2931990e542SRalf Baechle #define MIPS_CPU_ISA_M32R2	0x00000020
2941990e542SRalf Baechle #define MIPS_CPU_ISA_M64R1	0x00000040
2951990e542SRalf Baechle #define MIPS_CPU_ISA_M64R2	0x00000080
296384740dcSRalf Baechle 
2971990e542SRalf Baechle #define MIPS_CPU_ISA_32BIT (MIPS_CPU_ISA_II | MIPS_CPU_ISA_M32R1 | \
2981990e542SRalf Baechle 	MIPS_CPU_ISA_M32R2)
299384740dcSRalf Baechle #define MIPS_CPU_ISA_64BIT (MIPS_CPU_ISA_III | MIPS_CPU_ISA_IV | \
300384740dcSRalf Baechle 	MIPS_CPU_ISA_V | MIPS_CPU_ISA_M64R1 | MIPS_CPU_ISA_M64R2)
301384740dcSRalf Baechle 
302384740dcSRalf Baechle /*
303384740dcSRalf Baechle  * CPU Option encodings
304384740dcSRalf Baechle  */
305384740dcSRalf Baechle #define MIPS_CPU_TLB		0x00000001 /* CPU has TLB */
306384740dcSRalf Baechle #define MIPS_CPU_4KEX		0x00000002 /* "R4K" exception model */
307384740dcSRalf Baechle #define MIPS_CPU_3K_CACHE	0x00000004 /* R3000-style caches */
308384740dcSRalf Baechle #define MIPS_CPU_4K_CACHE	0x00000008 /* R4000-style caches */
309384740dcSRalf Baechle #define MIPS_CPU_TX39_CACHE	0x00000010 /* TX3900-style caches */
310384740dcSRalf Baechle #define MIPS_CPU_FPU		0x00000020 /* CPU has FPU */
311384740dcSRalf Baechle #define MIPS_CPU_32FPR		0x00000040 /* 32 dbl. prec. FP registers */
312384740dcSRalf Baechle #define MIPS_CPU_COUNTER	0x00000080 /* Cycle count/compare */
313384740dcSRalf Baechle #define MIPS_CPU_WATCH		0x00000100 /* watchpoint registers */
314384740dcSRalf Baechle #define MIPS_CPU_DIVEC		0x00000200 /* dedicated interrupt vector */
315384740dcSRalf Baechle #define MIPS_CPU_VCE		0x00000400 /* virt. coherence conflict possible */
316384740dcSRalf Baechle #define MIPS_CPU_CACHE_CDEX_P	0x00000800 /* Create_Dirty_Exclusive CACHE op */
317384740dcSRalf Baechle #define MIPS_CPU_CACHE_CDEX_S	0x00001000 /* ... same for seconary cache ... */
318384740dcSRalf Baechle #define MIPS_CPU_MCHECK		0x00002000 /* Machine check exception */
319384740dcSRalf Baechle #define MIPS_CPU_EJTAG		0x00004000 /* EJTAG exception */
320384740dcSRalf Baechle #define MIPS_CPU_NOFPUEX	0x00008000 /* no FPU exception */
321384740dcSRalf Baechle #define MIPS_CPU_LLSC		0x00010000 /* CPU has ll/sc instructions */
322384740dcSRalf Baechle #define MIPS_CPU_INCLUSIVE_CACHES	0x00020000 /* P-cache subset enforced */
323384740dcSRalf Baechle #define MIPS_CPU_PREFETCH	0x00040000 /* CPU has usable prefetch */
324384740dcSRalf Baechle #define MIPS_CPU_VINT		0x00080000 /* CPU supports MIPSR2 vectored interrupts */
325384740dcSRalf Baechle #define MIPS_CPU_VEIC		0x00100000 /* CPU supports MIPSR2 external interrupt controller mode */
326384740dcSRalf Baechle #define MIPS_CPU_ULRI		0x00200000 /* CPU has ULRI feature */
327da4b62cdSAl Cooper #define MIPS_CPU_PCI		0x00400000 /* CPU has Perf Ctr Int indicator */
328da4b62cdSAl Cooper #define MIPS_CPU_RIXI		0x00800000 /* CPU has TLB Read/eXec Inhibit */
329f8fa4811SSteven J. Hill #define MIPS_CPU_MICROMIPS	0x01000000 /* CPU has microMIPS capability */
330384740dcSRalf Baechle 
331384740dcSRalf Baechle /*
332384740dcSRalf Baechle  * CPU ASE encodings
333384740dcSRalf Baechle  */
334384740dcSRalf Baechle #define MIPS_ASE_MIPS16		0x00000001 /* code compression */
335384740dcSRalf Baechle #define MIPS_ASE_MDMX		0x00000002 /* MIPS digital media extension */
336384740dcSRalf Baechle #define MIPS_ASE_MIPS3D		0x00000004 /* MIPS-3D */
337384740dcSRalf Baechle #define MIPS_ASE_SMARTMIPS	0x00000008 /* SmartMIPS */
338384740dcSRalf Baechle #define MIPS_ASE_DSP		0x00000010 /* Signal Processing ASE */
339384740dcSRalf Baechle #define MIPS_ASE_MIPSMT		0x00000020 /* CPU supports MIPS MT */
340ee80f7c7SSteven J. Hill #define MIPS_ASE_DSP2P		0x00000040 /* Signal Processing ASE Rev 2 */
3411e7decdbSDavid Daney #define MIPS_ASE_VZ		0x00000080 /* Virtualization ASE */
342384740dcSRalf Baechle 
343384740dcSRalf Baechle #endif /* _ASM_CPU_H */
344