aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arc/kernel/setup.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arc/kernel/setup.c')
-rw-r--r--arch/arc/kernel/setup.c43
1 files changed, 39 insertions, 4 deletions
diff --git a/arch/arc/kernel/setup.c b/arch/arc/kernel/setup.c
index fb83844daeea..7ef7d9a8ff89 100644
--- a/arch/arc/kernel/setup.c
+++ b/arch/arc/kernel/setup.c
@@ -199,8 +199,10 @@ static void read_arc_build_cfg_regs(void)
199 unsigned int exec_ctrl; 199 unsigned int exec_ctrl;
200 200
201 READ_BCR(AUX_EXEC_CTRL, exec_ctrl); 201 READ_BCR(AUX_EXEC_CTRL, exec_ctrl);
202 cpu->extn.dual_iss_exist = 1; 202 cpu->extn.dual_enb = exec_ctrl & 1;
203 cpu->extn.dual_iss_enb = exec_ctrl & 1; 203
204 /* dual issue always present for this core */
205 cpu->extn.dual = 1;
204 } 206 }
205 } 207 }
206 208
@@ -253,7 +255,7 @@ static char *arc_cpu_mumbojumbo(int cpu_id, char *buf, int len)
253 cpu_id, cpu->name, cpu->details, 255 cpu_id, cpu->name, cpu->details,
254 is_isa_arcompact() ? "ARCompact" : "ARCv2", 256 is_isa_arcompact() ? "ARCompact" : "ARCv2",
255 IS_AVAIL1(cpu->isa.be, "[Big-Endian]"), 257 IS_AVAIL1(cpu->isa.be, "[Big-Endian]"),
256 IS_AVAIL3(cpu->extn.dual_iss_exist, cpu->extn.dual_iss_enb, " Dual-Issue")); 258 IS_AVAIL3(cpu->extn.dual, cpu->extn.dual_enb, " Dual-Issue "));
257 259
258 n += scnprintf(buf + n, len - n, "Timers\t\t: %s%s%s%s%s%s\nISA Extn\t: ", 260 n += scnprintf(buf + n, len - n, "Timers\t\t: %s%s%s%s%s%s\nISA Extn\t: ",
259 IS_AVAIL1(cpu->extn.timer0, "Timer0 "), 261 IS_AVAIL1(cpu->extn.timer0, "Timer0 "),
@@ -293,11 +295,26 @@ static char *arc_cpu_mumbojumbo(int cpu_id, char *buf, int len)
293 295
294 if (cpu->bpu.ver) 296 if (cpu->bpu.ver)
295 n += scnprintf(buf + n, len - n, 297 n += scnprintf(buf + n, len - n,
296 "BPU\t\t: %s%s match, cache:%d, Predict Table:%d\n", 298 "BPU\t\t: %s%s match, cache:%d, Predict Table:%d",
297 IS_AVAIL1(cpu->bpu.full, "full"), 299 IS_AVAIL1(cpu->bpu.full, "full"),
298 IS_AVAIL1(!cpu->bpu.full, "partial"), 300 IS_AVAIL1(!cpu->bpu.full, "partial"),
299 cpu->bpu.num_cache, cpu->bpu.num_pred); 301 cpu->bpu.num_cache, cpu->bpu.num_pred);
300 302
303 if (is_isa_arcv2()) {
304 struct bcr_lpb lpb;
305
306 READ_BCR(ARC_REG_LPB_BUILD, lpb);
307 if (lpb.ver) {
308 unsigned int ctl;
309 ctl = read_aux_reg(ARC_REG_LPB_CTRL);
310
311 n += scnprintf(buf + n, len - n, " Loop Buffer:%d %s",
312 lpb.entries,
313 IS_DISABLED_RUN(!ctl));
314 }
315 }
316
317 n += scnprintf(buf + n, len - n, "\n");
301 return buf; 318 return buf;
302} 319}
303 320
@@ -326,6 +343,24 @@ static char *arc_extn_mumbojumbo(int cpu_id, char *buf, int len)
326 cpu->dccm.base_addr, TO_KB(cpu->dccm.sz), 343 cpu->dccm.base_addr, TO_KB(cpu->dccm.sz),
327 cpu->iccm.base_addr, TO_KB(cpu->iccm.sz)); 344 cpu->iccm.base_addr, TO_KB(cpu->iccm.sz));
328 345
346 if (is_isa_arcv2()) {
347
348 /* Error Protection: ECC/Parity */
349 struct bcr_erp erp;
350 READ_BCR(ARC_REG_ERP_BUILD, erp);
351
352 if (erp.ver) {
353 struct ctl_erp ctl;
354 READ_BCR(ARC_REG_ERP_CTRL, ctl);
355
356 /* inverted bits: 0 means enabled */
357 n += scnprintf(buf + n, len - n, "Extn [ECC]\t: %s%s%s%s%s%s\n",
358 IS_AVAIL3(erp.ic, !ctl.dpi, "IC "),
359 IS_AVAIL3(erp.dc, !ctl.dpd, "DC "),
360 IS_AVAIL3(erp.mmu, !ctl.mpd, "MMU "));
361 }
362 }
363
329 n += scnprintf(buf + n, len - n, "OS ABI [v%d]\t: %s\n", 364 n += scnprintf(buf + n, len - n, "OS ABI [v%d]\t: %s\n",
330 EF_ARC_OSABI_CURRENT >> 8, 365 EF_ARC_OSABI_CURRENT >> 8,
331 EF_ARC_OSABI_CURRENT == EF_ARC_OSABI_V3 ? 366 EF_ARC_OSABI_CURRENT == EF_ARC_OSABI_V3 ?