[S390] Add hwcap flag for the etf3 enhancement facility
[linux-2.6.git] / arch / s390 / kernel / processor.c
index 82c1872..802c8ab 100644 (file)
 #include <asm/lowcore.h>
 #include <asm/param.h>
 
-void __cpuinit print_cpu_info(struct cpuinfo_S390 *cpuinfo)
+void __cpuinit print_cpu_info(void)
 {
        pr_info("Processor %d started, address %d, identification %06X\n",
-               cpuinfo->cpu_nr, cpuinfo->cpu_addr, cpuinfo->cpu_id.ident);
+               S390_lowcore.cpu_nr, S390_lowcore.cpu_addr,
+               S390_lowcore.cpu_id.ident);
 }
 
 /*
@@ -30,48 +31,46 @@ void __cpuinit print_cpu_info(struct cpuinfo_S390 *cpuinfo)
 
 static int show_cpuinfo(struct seq_file *m, void *v)
 {
-       static const char *hwcap_str[8] = {
+       static const char *hwcap_str[9] = {
                "esan3", "zarch", "stfle", "msa", "ldisp", "eimm", "dfp",
-               "edat"
+               "edat", "etf3eh"
        };
-       struct cpuinfo_S390 *cpuinfo;
-       unsigned long n = (unsigned long) v - 1;
-       int i;
+       struct _lowcore *lc;
+       unsigned long n = (unsigned long) v - 1;
+       int i;
 
-       s390_adjust_jiffies();
-       preempt_disable();
-       if (!n) {
-              seq_printf(m, "vendor_id       : IBM/S390\n"
-                         "# processors    : %i\n"
-                         "bogomips per cpu: %lu.%02lu\n",
-                         num_online_cpus(), loops_per_jiffy/(500000/HZ),
-                         (loops_per_jiffy/(5000/HZ))%100);
-              seq_puts(m, "features\t: ");
-              for (i = 0; i < 8; i++)
-                      if (hwcap_str[i] && (elf_hwcap & (1UL << i)))
-                              seq_printf(m, "%s ", hwcap_str[i]);
-              seq_puts(m, "\n");
-       }
+       s390_adjust_jiffies();
+       preempt_disable();
+       if (!n) {
+               seq_printf(m, "vendor_id       : IBM/S390\n"
+                          "# processors    : %i\n"
+                          "bogomips per cpu: %lu.%02lu\n",
+                          num_online_cpus(), loops_per_jiffy/(500000/HZ),
+                          (loops_per_jiffy/(5000/HZ))%100);
+               seq_puts(m, "features\t: ");
+               for (i = 0; i < 9; i++)
+                       if (hwcap_str[i] && (elf_hwcap & (1UL << i)))
+                               seq_printf(m, "%s ", hwcap_str[i]);
+               seq_puts(m, "\n");
+       }
 
-       if (cpu_online(n)) {
+       if (cpu_online(n)) {
 #ifdef CONFIG_SMP
-              if (smp_processor_id() == n)
-                      cpuinfo = &S390_lowcore.cpu_data;
-              else
-                      cpuinfo = &lowcore_ptr[n]->cpu_data;
+               lc = (smp_processor_id() == n) ?
+                       &S390_lowcore : lowcore_ptr[n];
 #else
-              cpuinfo = &S390_lowcore.cpu_data;
+               lc = &S390_lowcore;
 #endif
-              seq_printf(m, "processor %li: "
-                         "version = %02X,  "
-                         "identification = %06X,  "
-                         "machine = %04X\n",
-                         n, cpuinfo->cpu_id.version,
-                         cpuinfo->cpu_id.ident,
-                         cpuinfo->cpu_id.machine);
-       }
-       preempt_enable();
-       return 0;
+               seq_printf(m, "processor %li: "
+                          "version = %02X,  "
+                          "identification = %06X,  "
+                          "machine = %04X\n",
+                          n, lc->cpu_id.version,
+                          lc->cpu_id.ident,
+                          lc->cpu_id.machine);
+       }
+       preempt_enable();
+       return 0;
 }
 
 static void *c_start(struct seq_file *m, loff_t *pos)