Skip to content

Commit dea8252

Browse files
committed
ARCv2: boot log: identify HS48 cores (dual issue)
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
1 parent 010a8c9 commit dea8252

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

arch/arc/include/asm/arcregs.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@
9898

9999
/* Auxiliary registers */
100100
#define AUX_IDENTITY 4
101+
#define AUX_EXEC_CTRL 8
101102
#define AUX_INTR_VEC_BASE 0x25
102103
#define AUX_VOL 0x5e
103104

@@ -269,7 +270,7 @@ struct cpuinfo_arc {
269270
struct cpuinfo_arc_ccm iccm, dccm;
270271
struct {
271272
unsigned int swap:1, norm:1, minmax:1, barrel:1, crc:1, swape:1, pad1:2,
272-
fpu_sp:1, fpu_dp:1, pad2:6,
273+
fpu_sp:1, fpu_dp:1, dual_iss_enb:1, dual_iss_exist:1, pad2:4,
273274
debug:1, ap:1, smart:1, rtt:1, pad3:4,
274275
timer0:1, timer1:1, rtc:1, gfrc:1, pad4:4;
275276
} extn;

arch/arc/kernel/setup.c

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ static const struct id_to_str arc_cpu_rel[] = {
5151
{ 0x51, "R2.0" },
5252
{ 0x52, "R2.1" },
5353
{ 0x53, "R3.0" },
54+
{ 0x54, "R4.0" },
5455
#endif
5556
{ 0x00, NULL }
5657
};
@@ -62,6 +63,7 @@ static const struct id_to_str arc_cpu_nm[] = {
6263
#else
6364
{ 0x40, "ARC EM" },
6465
{ 0x50, "ARC HS38" },
66+
{ 0x54, "ARC HS48" },
6567
#endif
6668
{ 0x00, "Unknown" }
6769
};
@@ -133,7 +135,7 @@ static void read_arc_build_cfg_regs(void)
133135
}
134136

135137
for (tbl = &arc_cpu_nm[0]; tbl->id != 0; tbl++) {
136-
if ((cpu->core.family & 0xF0) == tbl->id)
138+
if ((cpu->core.family & 0xF4) == tbl->id)
137139
break;
138140
}
139141
cpu->name = tbl->str;
@@ -192,6 +194,14 @@ static void read_arc_build_cfg_regs(void)
192194
cpu->bpu.full = bpu.ft;
193195
cpu->bpu.num_cache = 256 << bpu.bce;
194196
cpu->bpu.num_pred = 2048 << bpu.pte;
197+
198+
if (cpu->core.family >= 0x54) {
199+
unsigned int exec_ctrl;
200+
201+
READ_BCR(AUX_EXEC_CTRL, exec_ctrl);
202+
cpu->extn.dual_iss_exist = 1;
203+
cpu->extn.dual_iss_enb = exec_ctrl & 1;
204+
}
195205
}
196206

197207
READ_BCR(ARC_REG_AP_BCR, bcr);
@@ -239,10 +249,11 @@ static char *arc_cpu_mumbojumbo(int cpu_id, char *buf, int len)
239249
"\nIDENTITY\t: ARCVER [%#02x] ARCNUM [%#02x] CHIPID [%#4x]\n",
240250
core->family, core->cpu_id, core->chip_id);
241251

242-
n += scnprintf(buf + n, len - n, "processor [%d]\t: %s %s (%s ISA) %s\n",
252+
n += scnprintf(buf + n, len - n, "processor [%d]\t: %s %s (%s ISA) %s%s%s\n",
243253
cpu_id, cpu->name, cpu->details,
244254
is_isa_arcompact() ? "ARCompact" : "ARCv2",
245-
IS_AVAIL1(cpu->isa.be, "[Big-Endian]"));
255+
IS_AVAIL1(cpu->isa.be, "[Big-Endian]"),
256+
IS_AVAIL3(cpu->extn.dual_iss_exist, cpu->extn.dual_iss_enb, " Dual-Issue"));
246257

247258
n += scnprintf(buf + n, len - n, "Timers\t\t: %s%s%s%s%s%s\nISA Extn\t: ",
248259
IS_AVAIL1(cpu->extn.timer0, "Timer0 "),

0 commit comments

Comments
 (0)