@@ -58,10 +58,12 @@ static const struct id_to_str arc_legacy_rel[] = {
58
58
{ 0x00 , NULL }
59
59
};
60
60
61
- static const struct id_to_str arc_cpu_rel [] = {
61
+ static const struct id_to_str arc_hs_ver54_rel [] = {
62
62
/* UARCH.MAJOR, Release */
63
63
{ 0 , "R3.10a" },
64
64
{ 1 , "R3.50a" },
65
+ { 2 , "R3.60a" },
66
+ { 3 , "R4.00a" },
65
67
{ 0xFF , NULL }
66
68
};
67
69
@@ -117,12 +119,6 @@ static void decode_arc_core(struct cpuinfo_arc *cpu)
117
119
struct bcr_uarch_build_arcv2 uarch ;
118
120
const struct id_to_str * tbl ;
119
121
120
- /*
121
- * Up until (including) the first core4 release (0x54) things were
122
- * simple: AUX IDENTITY.ARCVER was sufficient to identify arc family
123
- * and release: 0x50 to 0x53 was HS38, 0x54 was HS48 (dual issue)
124
- */
125
-
126
122
if (cpu -> core .family < 0x54 ) { /* includes arc700 */
127
123
128
124
for (tbl = & arc_legacy_rel [0 ]; tbl -> id != 0 ; tbl ++ ) {
@@ -143,11 +139,10 @@ static void decode_arc_core(struct cpuinfo_arc *cpu)
143
139
}
144
140
145
141
/*
146
- * However the subsequent HS release (same 0x54) allow HS38 or HS48
147
- * configurations and encode this info in a different BCR.
148
- * The BCR was introduced in 0x54 so can't be read unconditionally .
142
+ * Initial HS cores bumped AUX IDENTITY.ARCVER for each release until
143
+ * ARCVER 0x54 which introduced AUX MICRO_ARCH_BUILD and subsequent
144
+ * releases only update it .
149
145
*/
150
-
151
146
READ_BCR (ARC_REG_MICRO_ARCH_BCR , uarch );
152
147
153
148
if (uarch .prod == 4 ) {
@@ -158,7 +153,7 @@ static void decode_arc_core(struct cpuinfo_arc *cpu)
158
153
cpu -> name = "HS38" ;
159
154
}
160
155
161
- for (tbl = & arc_cpu_rel [0 ]; tbl -> id != 0xFF ; tbl ++ ) {
156
+ for (tbl = & arc_hs_ver54_rel [0 ]; tbl -> id != 0xFF ; tbl ++ ) {
162
157
if (uarch .maj == tbl -> id ) {
163
158
cpu -> release = tbl -> str ;
164
159
break ;
0 commit comments