@@ -188,16 +188,6 @@ static void read_arc_build_cfg_regs(void)
188
188
189
189
READ_BCR (ARC_REG_MUL_BCR , cpu -> extn_mpy );
190
190
191
- cpu -> extn .norm = read_aux_reg (ARC_REG_NORM_BCR ) > 1 ? 1 : 0 ; /* 2,3 */
192
- cpu -> extn .barrel = read_aux_reg (ARC_REG_BARREL_BCR ) > 1 ? 1 : 0 ; /* 2,3 */
193
- cpu -> extn .swap = read_aux_reg (ARC_REG_SWAP_BCR ) ? 1 : 0 ; /* 1,3 */
194
- cpu -> extn .crc = read_aux_reg (ARC_REG_CRC_BCR ) ? 1 : 0 ;
195
- cpu -> extn .minmax = read_aux_reg (ARC_REG_MIXMAX_BCR ) > 1 ? 1 : 0 ; /* 2 */
196
- cpu -> extn .swape = (cpu -> core .family >= 0x34 ) ? 1 :
197
- IS_ENABLED (CONFIG_ARC_HAS_SWAPE );
198
-
199
- READ_BCR (ARC_REG_XY_MEM_BCR , cpu -> extn_xymem );
200
-
201
191
/* Read CCM BCRs for boot reporting even if not enabled in Kconfig */
202
192
read_decode_ccm_bcr (cpu );
203
193
@@ -282,6 +272,7 @@ static char *arc_cpu_mumbojumbo(int cpu_id, char *buf, int len)
282
272
{
283
273
struct cpuinfo_arc * cpu = & cpuinfo_arc700 [cpu_id ];
284
274
struct bcr_identity * core = & cpu -> core ;
275
+ char mpy_opt [16 ];
285
276
int n = 0 ;
286
277
287
278
FIX_PTR (cpu );
@@ -302,10 +293,27 @@ static char *arc_cpu_mumbojumbo(int cpu_id, char *buf, int len)
302
293
IS_AVAIL2 (cpu -> extn .rtc , "RTC [UP 64-bit] " , CONFIG_ARC_TIMERS_64BIT ),
303
294
IS_AVAIL2 (cpu -> extn .gfrc , "GFRC [SMP 64-bit] " , CONFIG_ARC_TIMERS_64BIT ));
304
295
305
- n += scnprintf (buf + n , len - n , "%s%s%s%s%s%s" ,
296
+ if (cpu -> extn_mpy .ver ) {
297
+ if (is_isa_arcompact ()) {
298
+ scnprintf (mpy_opt , 16 , "mpy" );
299
+ } else {
300
+
301
+ int opt = 2 ; /* stock MPY/MPYH */
302
+
303
+ if (cpu -> extn_mpy .dsp ) /* OPT 7-9 */
304
+ opt = cpu -> extn_mpy .dsp + 6 ;
305
+
306
+ scnprintf (mpy_opt , 16 , "mpy[opt %d] " , opt );
307
+ }
308
+ }
309
+
310
+ n += scnprintf (buf + n , len - n , "%s%s%s%s%s%s%s%s\n" ,
306
311
IS_AVAIL2 (cpu -> isa .atomic , "atomic " , CONFIG_ARC_HAS_LLSC ),
307
312
IS_AVAIL2 (cpu -> isa .ldd , "ll64 " , CONFIG_ARC_HAS_LL64 ),
308
- IS_AVAIL2 (cpu -> isa .unalign , "unalign " , CONFIG_ARC_USE_UNALIGNED_MEM_ACCESS ));
313
+ IS_AVAIL2 (cpu -> isa .unalign , "unalign " , CONFIG_ARC_USE_UNALIGNED_MEM_ACCESS ),
314
+ IS_AVAIL1 (cpu -> extn_mpy .ver , mpy_opt ),
315
+ IS_AVAIL1 (cpu -> isa .div_rem , "div_rem " ));
316
+
309
317
310
318
#if defined(__ARC_UNALIGNED__ ) && !defined(CONFIG_ARC_USE_UNALIGNED_MEM_ACCESS )
311
319
/*
@@ -318,52 +326,29 @@ static char *arc_cpu_mumbojumbo(int cpu_id, char *buf, int len)
318
326
BUILD_BUG_ON_MSG (1 , "gcc doesn't support -mno-unaligned-access" );
319
327
#endif
320
328
321
- n += scnprintf (buf + n , len - n , "\n\t\t: " );
322
-
323
- if (cpu -> extn_mpy .ver ) {
324
- if (cpu -> extn_mpy .ver <= 0x2 ) { /* ARCompact */
325
- n += scnprintf (buf + n , len - n , "mpy " );
326
- } else {
327
- int opt = 2 ; /* stock MPY/MPYH */
328
-
329
- if (cpu -> extn_mpy .dsp ) /* OPT 7-9 */
330
- opt = cpu -> extn_mpy .dsp + 6 ;
331
-
332
- n += scnprintf (buf + n , len - n , "mpy[opt %d] " , opt );
333
- }
334
- }
335
-
336
- n += scnprintf (buf + n , len - n , "%s%s%s%s%s%s%s%s\n" ,
337
- IS_AVAIL1 (cpu -> isa .div_rem , "div_rem " ),
338
- IS_AVAIL1 (cpu -> extn .norm , "norm " ),
339
- IS_AVAIL1 (cpu -> extn .barrel , "barrel-shift " ),
340
- IS_AVAIL1 (cpu -> extn .swap , "swap " ),
341
- IS_AVAIL1 (cpu -> extn .minmax , "minmax " ),
342
- IS_AVAIL1 (cpu -> extn .crc , "crc " ),
343
- IS_AVAIL2 (cpu -> extn .swape , "swape" , CONFIG_ARC_HAS_SWAPE ));
344
-
345
- if (cpu -> bpu .ver )
329
+ if (cpu -> bpu .ver ) {
346
330
n += scnprintf (buf + n , len - n ,
347
331
"BPU\t\t: %s%s match, cache:%d, Predict Table:%d Return stk: %d" ,
348
332
IS_AVAIL1 (cpu -> bpu .full , "full" ),
349
333
IS_AVAIL1 (!cpu -> bpu .full , "partial" ),
350
334
cpu -> bpu .num_cache , cpu -> bpu .num_pred , cpu -> bpu .ret_stk );
351
335
352
- if (is_isa_arcv2 ()) {
353
- struct bcr_lpb lpb ;
336
+ if (is_isa_arcv2 ()) {
337
+ struct bcr_lpb lpb ;
354
338
355
- READ_BCR (ARC_REG_LPB_BUILD , lpb );
356
- if (lpb .ver ) {
357
- unsigned int ctl ;
358
- ctl = read_aux_reg (ARC_REG_LPB_CTRL );
339
+ READ_BCR (ARC_REG_LPB_BUILD , lpb );
340
+ if (lpb .ver ) {
341
+ unsigned int ctl ;
342
+ ctl = read_aux_reg (ARC_REG_LPB_CTRL );
359
343
360
- n += scnprintf (buf + n , len - n , " Loop Buffer:%d %s" ,
361
- lpb .entries ,
362
- IS_DISABLED_RUN (!ctl ));
344
+ n += scnprintf (buf + n , len - n , " Loop Buffer:%d %s" ,
345
+ lpb .entries ,
346
+ IS_DISABLED_RUN (!ctl ));
347
+ }
363
348
}
349
+ n += scnprintf (buf + n , len - n , "\n" );
364
350
}
365
351
366
- n += scnprintf (buf + n , len - n , "\n" );
367
352
return buf ;
368
353
}
369
354
@@ -416,11 +401,6 @@ static char *arc_extn_mumbojumbo(int cpu_id, char *buf, int len)
416
401
}
417
402
}
418
403
419
- n += scnprintf (buf + n , len - n , "OS ABI [v%d]\t: %s\n" ,
420
- EF_ARC_OSABI_CURRENT >> 8 ,
421
- EF_ARC_OSABI_CURRENT == EF_ARC_OSABI_V3 ?
422
- "no-legacy-syscalls" : "64-bit data any register aligned" );
423
-
424
404
return buf ;
425
405
}
426
406
0 commit comments