|
@@ -972,27 +972,27 @@ static void bootcmds(void)
|
|
|
static int cpu_cmd(void)
|
|
|
{
|
|
|
#ifdef CONFIG_SMP
|
|
|
- unsigned long cpu;
|
|
|
+ unsigned long cpu, first_cpu, last_cpu;
|
|
|
int timeout;
|
|
|
- int count;
|
|
|
|
|
|
if (!scanhex(&cpu)) {
|
|
|
/* print cpus waiting or in xmon */
|
|
|
printf("cpus stopped:");
|
|
|
- count = 0;
|
|
|
+ last_cpu = first_cpu = NR_CPUS;
|
|
|
for_each_possible_cpu(cpu) {
|
|
|
if (cpumask_test_cpu(cpu, &cpus_in_xmon)) {
|
|
|
- if (count == 0)
|
|
|
- printf(" %x", cpu);
|
|
|
- ++count;
|
|
|
- } else {
|
|
|
- if (count > 1)
|
|
|
- printf("-%x", cpu - 1);
|
|
|
- count = 0;
|
|
|
+ if (cpu == last_cpu + 1) {
|
|
|
+ last_cpu = cpu;
|
|
|
+ } else {
|
|
|
+ if (last_cpu != first_cpu)
|
|
|
+ printf("-%lx", last_cpu);
|
|
|
+ last_cpu = first_cpu = cpu;
|
|
|
+ printf(" %lx", cpu);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- if (count > 1)
|
|
|
- printf("-%x", NR_CPUS - 1);
|
|
|
+ if (last_cpu != first_cpu)
|
|
|
+ printf("-%lx", last_cpu);
|
|
|
printf("\n");
|
|
|
return 0;
|
|
|
}
|