Loading arch/arc/include/asm/arcregs.h +9 −1 Original line number Diff line number Diff line Loading @@ -216,6 +216,14 @@ struct bcr_fp_arcv2 { #endif }; struct bcr_actionpoint { #ifdef CONFIG_CPU_BIG_ENDIAN unsigned int pad:21, min:1, num:2, ver:8; #else unsigned int ver:8, num:2, min:1, pad:21; #endif }; #include <soc/arc/timers.h> struct bcr_bpu_arcompact { Loading Loading @@ -302,7 +310,7 @@ struct cpuinfo_arc { struct { unsigned int swap:1, norm:1, minmax:1, barrel:1, crc:1, swape:1, pad1:2, fpu_sp:1, fpu_dp:1, dual:1, dual_enb:1, pad2:4, debug:1, ap:1, smart:1, rtt:1, pad3:4, ap_num:4, ap_full:1, smart:1, rtt:1, pad3:1, timer0:1, timer1:1, rtc:1, gfrc:1, pad4:4; } extn; struct bcr_mpy extn_mpy; Loading arch/arc/kernel/setup.c +15 −7 Original line number Diff line number Diff line Loading @@ -123,6 +123,7 @@ static void read_arc_build_cfg_regs(void) struct cpuinfo_arc *cpu = &cpuinfo_arc700[smp_processor_id()]; const struct id_to_str *tbl; struct bcr_isa_arcv2 isa; struct bcr_actionpoint ap; FIX_PTR(cpu); Loading Loading @@ -208,8 +209,11 @@ static void read_arc_build_cfg_regs(void) } } READ_BCR(ARC_REG_AP_BCR, bcr); cpu->extn.ap = bcr.ver ? 1 : 0; READ_BCR(ARC_REG_AP_BCR, ap); if (ap.ver) { cpu->extn.ap_num = 2 << ap.num; cpu->extn.ap_full = !!ap.min; } READ_BCR(ARC_REG_SMART_BCR, bcr); cpu->extn.smart = bcr.ver ? 1 : 0; Loading @@ -217,8 +221,6 @@ static void read_arc_build_cfg_regs(void) READ_BCR(ARC_REG_RTT_BCR, bcr); cpu->extn.rtt = bcr.ver ? 1 : 0; cpu->extn.debug = cpu->extn.ap | cpu->extn.smart | cpu->extn.rtt; READ_BCR(ARC_REG_ISA_CFG_BCR, isa); /* some hacks for lack of feature BCR info in old ARC700 cores */ Loading Loading @@ -337,11 +339,17 @@ static char *arc_extn_mumbojumbo(int cpu_id, char *buf, int len) IS_AVAIL1(cpu->extn.fpu_sp, "SP "), IS_AVAIL1(cpu->extn.fpu_dp, "DP ")); if (cpu->extn.debug) n += scnprintf(buf + n, len - n, "DEBUG\t\t: %s%s%s\n", IS_AVAIL1(cpu->extn.ap, "ActionPoint "), if (cpu->extn.ap_num | cpu->extn.smart | cpu->extn.rtt) { n += scnprintf(buf + n, len - n, "DEBUG\t\t: %s%s", IS_AVAIL1(cpu->extn.smart, "smaRT "), IS_AVAIL1(cpu->extn.rtt, "RTT ")); if (cpu->extn.ap_num) { n += scnprintf(buf + n, len - n, "ActionPoint %d/%s", cpu->extn.ap_num, cpu->extn.ap_full ? "full":"min"); } n += scnprintf(buf + n, len - n, "\n"); } if (cpu->dccm.sz || cpu->iccm.sz) n += scnprintf(buf + n, len - n, "Extn [CCM]\t: DCCM @ %x, %d KB / ICCM: @ %x, %d KB\n", Loading Loading
arch/arc/include/asm/arcregs.h +9 −1 Original line number Diff line number Diff line Loading @@ -216,6 +216,14 @@ struct bcr_fp_arcv2 { #endif }; struct bcr_actionpoint { #ifdef CONFIG_CPU_BIG_ENDIAN unsigned int pad:21, min:1, num:2, ver:8; #else unsigned int ver:8, num:2, min:1, pad:21; #endif }; #include <soc/arc/timers.h> struct bcr_bpu_arcompact { Loading Loading @@ -302,7 +310,7 @@ struct cpuinfo_arc { struct { unsigned int swap:1, norm:1, minmax:1, barrel:1, crc:1, swape:1, pad1:2, fpu_sp:1, fpu_dp:1, dual:1, dual_enb:1, pad2:4, debug:1, ap:1, smart:1, rtt:1, pad3:4, ap_num:4, ap_full:1, smart:1, rtt:1, pad3:1, timer0:1, timer1:1, rtc:1, gfrc:1, pad4:4; } extn; struct bcr_mpy extn_mpy; Loading
arch/arc/kernel/setup.c +15 −7 Original line number Diff line number Diff line Loading @@ -123,6 +123,7 @@ static void read_arc_build_cfg_regs(void) struct cpuinfo_arc *cpu = &cpuinfo_arc700[smp_processor_id()]; const struct id_to_str *tbl; struct bcr_isa_arcv2 isa; struct bcr_actionpoint ap; FIX_PTR(cpu); Loading Loading @@ -208,8 +209,11 @@ static void read_arc_build_cfg_regs(void) } } READ_BCR(ARC_REG_AP_BCR, bcr); cpu->extn.ap = bcr.ver ? 1 : 0; READ_BCR(ARC_REG_AP_BCR, ap); if (ap.ver) { cpu->extn.ap_num = 2 << ap.num; cpu->extn.ap_full = !!ap.min; } READ_BCR(ARC_REG_SMART_BCR, bcr); cpu->extn.smart = bcr.ver ? 1 : 0; Loading @@ -217,8 +221,6 @@ static void read_arc_build_cfg_regs(void) READ_BCR(ARC_REG_RTT_BCR, bcr); cpu->extn.rtt = bcr.ver ? 1 : 0; cpu->extn.debug = cpu->extn.ap | cpu->extn.smart | cpu->extn.rtt; READ_BCR(ARC_REG_ISA_CFG_BCR, isa); /* some hacks for lack of feature BCR info in old ARC700 cores */ Loading Loading @@ -337,11 +339,17 @@ static char *arc_extn_mumbojumbo(int cpu_id, char *buf, int len) IS_AVAIL1(cpu->extn.fpu_sp, "SP "), IS_AVAIL1(cpu->extn.fpu_dp, "DP ")); if (cpu->extn.debug) n += scnprintf(buf + n, len - n, "DEBUG\t\t: %s%s%s\n", IS_AVAIL1(cpu->extn.ap, "ActionPoint "), if (cpu->extn.ap_num | cpu->extn.smart | cpu->extn.rtt) { n += scnprintf(buf + n, len - n, "DEBUG\t\t: %s%s", IS_AVAIL1(cpu->extn.smart, "smaRT "), IS_AVAIL1(cpu->extn.rtt, "RTT ")); if (cpu->extn.ap_num) { n += scnprintf(buf + n, len - n, "ActionPoint %d/%s", cpu->extn.ap_num, cpu->extn.ap_full ? "full":"min"); } n += scnprintf(buf + n, len - n, "\n"); } if (cpu->dccm.sz || cpu->iccm.sz) n += scnprintf(buf + n, len - n, "Extn [CCM]\t: DCCM @ %x, %d KB / ICCM: @ %x, %d KB\n", Loading