setup.c (70f3522614e60b6125eff5f9dd7c887543812187) setup.c (76551468833cd5c356b1d9ff4bc9393fcf768a59)
1/*
2 * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 */
8

--- 249 unchanged lines hidden (view full) ---

258 cpu->isa = isa;
259 }
260}
261
262static char *arc_cpu_mumbojumbo(int cpu_id, char *buf, int len)
263{
264 struct cpuinfo_arc *cpu = &cpuinfo_arc700[cpu_id];
265 struct bcr_identity *core = &cpu->core;
1/*
2 * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 */
8

--- 249 unchanged lines hidden (view full) ---

258 cpu->isa = isa;
259 }
260}
261
262static char *arc_cpu_mumbojumbo(int cpu_id, char *buf, int len)
263{
264 struct cpuinfo_arc *cpu = &cpuinfo_arc700[cpu_id];
265 struct bcr_identity *core = &cpu->core;
266 int i, n = 0, ua = 0;
266 int n = 0;
267
268 FIX_PTR(cpu);
269
270 n += scnprintf(buf + n, len - n,
271 "\nIDENTITY\t: ARCVER [%#02x] ARCNUM [%#02x] CHIPID [%#4x]\n",
272 core->family, core->cpu_id, core->chip_id);
273
274 n += scnprintf(buf + n, len - n, "processor [%d]\t: %s %s (%s ISA) %s%s%s\n",
275 cpu_id, cpu->name, cpu->details,
276 is_isa_arcompact() ? "ARCompact" : "ARCv2",
277 IS_AVAIL1(cpu->isa.be, "[Big-Endian]"),
278 IS_AVAIL3(cpu->extn.dual, cpu->extn.dual_enb, " Dual-Issue "));
279
280 n += scnprintf(buf + n, len - n, "Timers\t\t: %s%s%s%s%s%s\nISA Extn\t: ",
281 IS_AVAIL1(cpu->extn.timer0, "Timer0 "),
282 IS_AVAIL1(cpu->extn.timer1, "Timer1 "),
283 IS_AVAIL2(cpu->extn.rtc, "RTC [UP 64-bit] ", CONFIG_ARC_TIMERS_64BIT),
284 IS_AVAIL2(cpu->extn.gfrc, "GFRC [SMP 64-bit] ", CONFIG_ARC_TIMERS_64BIT));
285
267
268 FIX_PTR(cpu);
269
270 n += scnprintf(buf + n, len - n,
271 "\nIDENTITY\t: ARCVER [%#02x] ARCNUM [%#02x] CHIPID [%#4x]\n",
272 core->family, core->cpu_id, core->chip_id);
273
274 n += scnprintf(buf + n, len - n, "processor [%d]\t: %s %s (%s ISA) %s%s%s\n",
275 cpu_id, cpu->name, cpu->details,
276 is_isa_arcompact() ? "ARCompact" : "ARCv2",
277 IS_AVAIL1(cpu->isa.be, "[Big-Endian]"),
278 IS_AVAIL3(cpu->extn.dual, cpu->extn.dual_enb, " Dual-Issue "));
279
280 n += scnprintf(buf + n, len - n, "Timers\t\t: %s%s%s%s%s%s\nISA Extn\t: ",
281 IS_AVAIL1(cpu->extn.timer0, "Timer0 "),
282 IS_AVAIL1(cpu->extn.timer1, "Timer1 "),
283 IS_AVAIL2(cpu->extn.rtc, "RTC [UP 64-bit] ", CONFIG_ARC_TIMERS_64BIT),
284 IS_AVAIL2(cpu->extn.gfrc, "GFRC [SMP 64-bit] ", CONFIG_ARC_TIMERS_64BIT));
285
286#ifdef __ARC_UNALIGNED__
287 ua = 1;
286 n += scnprintf(buf + n, len - n, "%s%s%s%s%s%s",
287 IS_AVAIL2(cpu->isa.atomic, "atomic ", CONFIG_ARC_HAS_LLSC),
288 IS_AVAIL2(cpu->isa.ldd, "ll64 ", CONFIG_ARC_HAS_LL64),
289 IS_AVAIL2(cpu->isa.unalign, "unalign ", CONFIG_ARC_USE_UNALIGNED_MEM_ACCESS));
290
291#if defined(__ARC_UNALIGNED__) && !defined(CONFIG_ARC_USE_UNALIGNED_MEM_ACCESS)
292 /*
293 * gcc 7.3.1 (GNU 2018.03) onwards generate unaligned access by default
294 * but -mno-unaligned-access to disable that didn't work until gcc 8.2.1
295 * (GNU 2019.03). So landing here implies the interim period, when
296 * despite Kconfig being off, gcc is generating unaligned accesses which
297 * could bomb later on. So better to disallow such broken builds
298 */
299 BUILD_BUG_ON_MSG(1, "gcc doesn't support -mno-unaligned-access");
288#endif
300#endif
289 n += i = scnprintf(buf + n, len - n, "%s%s%s%s%s%s",
290 IS_AVAIL2(cpu->isa.atomic, "atomic ", CONFIG_ARC_HAS_LLSC),
291 IS_AVAIL2(cpu->isa.ldd, "ll64 ", CONFIG_ARC_HAS_LL64),
292 IS_AVAIL1(cpu->isa.unalign, "unalign "), IS_USED_RUN(ua));
293
301
294 if (i)
295 n += scnprintf(buf + n, len - n, "\n\t\t: ");
302 n += scnprintf(buf + n, len - n, "\n\t\t: ");
296
297 if (cpu->extn_mpy.ver) {
298 if (cpu->extn_mpy.ver <= 0x2) { /* ARCompact */
299 n += scnprintf(buf + n, len - n, "mpy ");
300 } else {
301 int opt = 2; /* stock MPY/MPYH */
302
303 if (cpu->extn_mpy.dsp) /* OPT 7-9 */

--- 400 unchanged lines hidden ---
303
304 if (cpu->extn_mpy.ver) {
305 if (cpu->extn_mpy.ver <= 0x2) { /* ARCompact */
306 n += scnprintf(buf + n, len - n, "mpy ");
307 } else {
308 int opt = 2; /* stock MPY/MPYH */
309
310 if (cpu->extn_mpy.dsp) /* OPT 7-9 */

--- 400 unchanged lines hidden ---