Lines Matching +full:isa +full:- +full:base

1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
31 #include <asm/dsp-impl.h>
38 /* Part of U-boot ABI: see head.S */
51 unsigned long base; member
87 struct bcr_generic isa; in arcompact_mumbojumbo() local
89 READ_BCR(ARC_REG_ISA_CFG_BCR, isa); in arcompact_mumbojumbo()
91 if (!isa.ver) /* ISA BCR absent, use Kconfig info */ in arcompact_mumbojumbo()
94 /* ARC700_BUILD only has 2 bits of isa info */ in arcompact_mumbojumbo()
95 atomic = isa.info & 1; in arcompact_mumbojumbo()
100 if (info->arcver < 0x34) in arcompact_mumbojumbo()
105 n += scnprintf(buf + n, len - n, "processor [%d]\t: %s (%s ISA) %s%s%s\n", in arcompact_mumbojumbo()
108 IS_AVAIL1(be, "[Big-Endian]")); in arcompact_mumbojumbo()
114 n += scnprintf(buf + n, len - n, "FPU\t\t: %s%s\n", in arcompact_mumbojumbo()
120 bpu_cache = 256 << (bpu.ent - 1); in arcompact_mumbojumbo()
121 bpu_pred = 256 << (bpu.ent - 1); in arcompact_mumbojumbo()
123 n += scnprintf(buf + n, len - n, in arcompact_mumbojumbo()
131 info->iccm.sz = 4096 << iccm.sz; /* 8K to 512K */ in arcompact_mumbojumbo()
132 info->iccm.base = iccm.base << 16; in arcompact_mumbojumbo()
137 unsigned long base; in arcompact_mumbojumbo() local
138 info->dccm.sz = 2048 << dccm.sz; /* 2K to 256K */ in arcompact_mumbojumbo()
140 base = read_aux_reg(ARC_REG_DCCM_BASE_BUILD); in arcompact_mumbojumbo()
141 info->dccm.base = base & ~0xF; in arcompact_mumbojumbo()
144 /* ARCompact ISA specific sanity checks */ in arcompact_mumbojumbo()
160 struct bcr_isa_arcv2 isa; in arcv2_mumbojumbo() local
177 if (info->arcver > 0x50 && info->arcver <= 0x53) { in arcv2_mumbojumbo()
178 release = arc_hs_rel[info->arcver - 0x51].str; in arcv2_mumbojumbo()
185 for (tbl = &arc_hs_ver54_rel[0]; tbl->id != 0xFF; tbl++) { in arcv2_mumbojumbo()
186 if (uarch.maj == tbl->id) { in arcv2_mumbojumbo()
187 release = tbl->str; in arcv2_mumbojumbo()
202 READ_BCR(ARC_REG_ISA_CFG_BCR, isa); in arcv2_mumbojumbo()
204 n += scnprintf(buf + n, len - n, "processor [%d]\t: %s %s (%s ISA) %s%s%s\n", in arcv2_mumbojumbo()
206 IS_AVAIL1(isa.be, "[Big-Endian]"), in arcv2_mumbojumbo()
207 IS_AVAIL3(dual_issue, dual_enb, " Dual-Issue ")); in arcv2_mumbojumbo()
211 if (mpy.dsp) /* OPT 7-9 */ in arcv2_mumbojumbo()
218 n += scnprintf(buf + n, len - n, "ISA Extn\t: %s%s%s%s%s%s%s%s%s%s%s\n", in arcv2_mumbojumbo()
219 IS_AVAIL2(isa.atomic, "atomic ", CONFIG_ARC_HAS_LLSC), in arcv2_mumbojumbo()
220 IS_AVAIL2(isa.ldd, "ll64 ", CONFIG_ARC_HAS_LL64), in arcv2_mumbojumbo()
221 IS_AVAIL2(isa.unalign, "unalign ", CONFIG_ARC_USE_UNALIGNED_MEM_ACCESS), in arcv2_mumbojumbo()
223 IS_AVAIL1(isa.div_rem, "div_rem "), in arcv2_mumbojumbo()
243 n += scnprintf(buf + n, len - n, in arcv2_mumbojumbo()
252 unsigned long base; in arcv2_mumbojumbo() local
253 info->iccm.sz = 256 << iccm.sz00; /* 512B to 16M */ in arcv2_mumbojumbo()
255 info->iccm.sz <<= iccm.sz01; in arcv2_mumbojumbo()
256 base = read_aux_reg(ARC_REG_AUX_ICCM); in arcv2_mumbojumbo()
257 info->iccm.base = base & 0xF0000000; in arcv2_mumbojumbo()
262 unsigned long base; in arcv2_mumbojumbo() local
263 info->dccm.sz = 256 << dccm.sz0; in arcv2_mumbojumbo()
265 info->dccm.sz <<= dccm.sz1; in arcv2_mumbojumbo()
266 base = read_aux_reg(ARC_REG_AUX_DCCM); in arcv2_mumbojumbo()
267 info->dccm.base = base & 0xF0000000; in arcv2_mumbojumbo()
276 n += scnprintf(buf + n, len - n, "Extn [ECC]\t: %s%s%s%s%s%s\n", in arcv2_mumbojumbo()
282 /* ARCv2 ISA specific sanity checks */ in arcv2_mumbojumbo()
304 info->arcver = ident.family; in arc_cpu_mumbojumbo()
311 n += arcompact_mumbojumbo(c, info, buf + n, len - n); in arc_cpu_mumbojumbo()
313 n += arcv2_mumbojumbo(c, info, buf + n, len - n); in arc_cpu_mumbojumbo()
316 n += arc_mmu_mumbojumbo(c, buf + n, len - n); in arc_cpu_mumbojumbo()
317 n += arc_cache_mumbojumbo(c, buf + n, len - n); in arc_cpu_mumbojumbo()
320 info->t0 = timer.t0; in arc_cpu_mumbojumbo()
321 info->t1 = timer.t1; in arc_cpu_mumbojumbo()
326 n += scnprintf(buf + n, len - n, in arc_cpu_mumbojumbo()
330 IS_AVAIL2(timer.rtc, "RTC [UP 64-bit] ", CONFIG_ARC_TIMERS_64BIT), in arc_cpu_mumbojumbo()
331 IS_AVAIL2(mp.gfrc, "GFRC [SMP 64-bit] ", CONFIG_ARC_TIMERS_64BIT), in arc_cpu_mumbojumbo()
347 n += scnprintf(buf + n, len - n, "DEBUG\t\t: %s%s", in arc_cpu_mumbojumbo()
351 n += scnprintf(buf + n, len - n, "ActionPoint %d/%s", in arc_cpu_mumbojumbo()
355 n += scnprintf(buf + n, len - n, "\n"); in arc_cpu_mumbojumbo()
358 if (info->dccm.sz || info->iccm.sz) in arc_cpu_mumbojumbo()
359 n += scnprintf(buf + n, len - n, in arc_cpu_mumbojumbo()
361 info->dccm.base, TO_KB(info->dccm.sz), in arc_cpu_mumbojumbo()
362 info->iccm.base, TO_KB(info->iccm.sz)); in arc_cpu_mumbojumbo()
382 * ISA agnostic sanity checks
386 if (!info->t0) in arc_chk_core_config()
389 if (!info->t1) in arc_chk_core_config()
397 if ((unsigned int)__arc_dccm_base != info->dccm.base) in arc_chk_core_config()
398 panic("Linux built with incorrect DCCM Base address\n"); in arc_chk_core_config()
400 if (CONFIG_ARC_DCCM_SZ * SZ_1K != info->dccm.sz) in arc_chk_core_config()
405 if (CONFIG_ARC_ICCM_SZ * SZ_1K != info->iccm.sz) in arc_chk_core_config()
446 #define IGNORE_ARGS "Ignore U-boot args: "
448 /* uboot_tag values for U-boot - kernel ABI revision 0; see head.S */
452 /* We always pass 0 as magic from U-boot */
479 /* see if U-boot passed an external Device Tree blob */ in handle_uboot_args()
483 /* external Device Tree blob is invalid - use embedded one */ in handle_uboot_args()
520 if (machine_desc->init_early) in setup_arch()
521 machine_desc->init_early(); in setup_arch()
540 * Called from start_kernel() - boot CPU only
550 if (machine_desc->init_machine) in customize_machine()
551 machine_desc->init_machine(); in customize_machine()
559 if (machine_desc->init_late) in init_late_machine()
560 machine_desc->init_late(); in init_late_machine()
619 * Callback returns cpu-id to iterator for show routine, NULL to stop. in c_start()
620 * However since NULL is also a valid cpu-id (0), we use a round-about in c_start()
622 * Encode cpu-id as 0xFFcccc, which is decoded by show routine. in c_start()