Loading arch/sparc/include/asm/pgtable_64.h +3 −0 Original line number Diff line number Diff line Loading @@ -699,6 +699,9 @@ extern pmd_t swapper_low_pmd_dir[2048]; extern void paging_init(void); extern unsigned long find_ecache_flush_span(unsigned long size); struct seq_file; extern void mmu_info(struct seq_file *); /* These do nothing with the way I have things setup. */ #define mmu_lockarea(vaddr, len) (vaddr) #define mmu_unlockarea(vaddr, len) do { } while(0) Loading arch/sparc/include/asm/smp_64.h +4 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,10 @@ extern void cpu_play_dead(void); extern void smp_fetch_global_regs(void); struct seq_file; void smp_bogo(struct seq_file *); void smp_info(struct seq_file *); #ifdef CONFIG_HOTPLUG_CPU extern int __cpu_disable(void); extern void __cpu_die(unsigned int cpu); Loading arch/sparc/include/asm/system_64.h +0 −4 Original line number Diff line number Diff line Loading @@ -29,10 +29,6 @@ enum sparc_cpu { /* This cannot ever be a sun4c :) That's just history. */ #define ARCH_SUN4C 0 extern const char *sparc_cpu_type; extern const char *sparc_fpu_type; extern const char *sparc_pmu_type; extern char reboot_command[]; /* These are here in an effort to more fully work around Spitfire Errata Loading arch/sparc/kernel/cpu.c +124 −3 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) */ #include <linux/seq_file.h> #include <linux/kernel.h> #include <linux/module.h> #include <linux/init.h> Loading @@ -11,7 +12,9 @@ #include <linux/threads.h> #include <asm/spitfire.h> #include <asm/pgtable.h> #include <asm/oplib.h> #include <asm/setup.h> #include <asm/page.h> #include <asm/head.h> #include <asm/psr.h> Loading @@ -23,6 +26,9 @@ DEFINE_PER_CPU(cpuinfo_sparc, __cpu_data) = { 0 }; EXPORT_PER_CPU_SYMBOL(__cpu_data); int ncpus_probed; unsigned int fsr_storage; struct cpu_info { int psr_vers; const char *name; Loading Loading @@ -247,11 +253,10 @@ static const struct manufacturer_info __initconst manufacturer_info[] = { * machine type value into consideration too. I will fix this. */ const char *sparc_cpu_type; const char *sparc_fpu_type; static const char *sparc_cpu_type; static const char *sparc_fpu_type; const char *sparc_pmu_type; unsigned int fsr_storage; static void set_cpu_and_fpu(int psr_impl, int psr_vers, int fpu_vers) { Loading Loading @@ -312,6 +317,122 @@ static void set_cpu_and_fpu(int psr_impl, int psr_vers, int fpu_vers) sparc_pmu_type = "Unknown PMU"; } #ifdef CONFIG_SPARC32 static int show_cpuinfo(struct seq_file *m, void *__unused) { seq_printf(m, "cpu\t\t: %s\n" "fpu\t\t: %s\n" "promlib\t\t: Version %d Revision %d\n" "prom\t\t: %d.%d\n" "type\t\t: %s\n" "ncpus probed\t: %d\n" "ncpus active\t: %d\n" #ifndef CONFIG_SMP "CPU0Bogo\t: %lu.%02lu\n" "CPU0ClkTck\t: %ld\n" #endif , sparc_cpu_type, sparc_fpu_type , romvec->pv_romvers, prom_rev, romvec->pv_printrev >> 16, romvec->pv_printrev & 0xffff, &cputypval[0], ncpus_probed, num_online_cpus() #ifndef CONFIG_SMP , cpu_data(0).udelay_val/(500000/HZ), (cpu_data(0).udelay_val/(5000/HZ)) % 100, cpu_data(0).clock_tick #endif ); #ifdef CONFIG_SMP smp_bogo(m); #endif mmu_info(m); #ifdef CONFIG_SMP smp_info(m); #endif return 0; } #endif /* CONFIG_SPARC32 */ #ifdef CONFIG_SPARC64 unsigned int dcache_parity_tl1_occurred; unsigned int icache_parity_tl1_occurred; static int show_cpuinfo(struct seq_file *m, void *__unused) { seq_printf(m, "cpu\t\t: %s\n" "fpu\t\t: %s\n" "pmu\t\t: %s\n" "prom\t\t: %s\n" "type\t\t: %s\n" "ncpus probed\t: %d\n" "ncpus active\t: %d\n" "D$ parity tl1\t: %u\n" "I$ parity tl1\t: %u\n" #ifndef CONFIG_SMP "Cpu0ClkTck\t: %016lx\n" #endif , sparc_cpu_type, sparc_fpu_type, sparc_pmu_type, prom_version, ((tlb_type == hypervisor) ? "sun4v" : "sun4u"), ncpus_probed, num_online_cpus(), dcache_parity_tl1_occurred, icache_parity_tl1_occurred #ifndef CONFIG_SMP , cpu_data(0).clock_tick #endif ); #ifdef CONFIG_SMP smp_bogo(m); #endif mmu_info(m); #ifdef CONFIG_SMP smp_info(m); #endif return 0; } #endif /* CONFIG_SPARC64 */ static void *c_start(struct seq_file *m, loff_t *pos) { /* The pointer we are returning is arbitrary, * it just has to be non-NULL and not IS_ERR * in the success case. */ return *pos == 0 ? &c_start : NULL; } static void *c_next(struct seq_file *m, void *v, loff_t *pos) { ++*pos; return c_start(m, pos); } static void c_stop(struct seq_file *m, void *v) { } const struct seq_operations cpuinfo_op = { .start =c_start, .next = c_next, .stop = c_stop, .show = show_cpuinfo, }; #ifdef CONFIG_SPARC32 void __cpuinit cpu_probe(void) { Loading arch/sparc/kernel/kernel.h +1 −3 Original line number Diff line number Diff line Loading @@ -6,11 +6,9 @@ #include <asm/traps.h> /* cpu.c */ extern const char *sparc_cpu_type; extern const char *sparc_pmu_type; extern const char *sparc_fpu_type; extern unsigned int fsr_storage; extern int ncpus_probed; #ifdef CONFIG_SPARC32 /* cpu.c */ Loading Loading
arch/sparc/include/asm/pgtable_64.h +3 −0 Original line number Diff line number Diff line Loading @@ -699,6 +699,9 @@ extern pmd_t swapper_low_pmd_dir[2048]; extern void paging_init(void); extern unsigned long find_ecache_flush_span(unsigned long size); struct seq_file; extern void mmu_info(struct seq_file *); /* These do nothing with the way I have things setup. */ #define mmu_lockarea(vaddr, len) (vaddr) #define mmu_unlockarea(vaddr, len) do { } while(0) Loading
arch/sparc/include/asm/smp_64.h +4 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,10 @@ extern void cpu_play_dead(void); extern void smp_fetch_global_regs(void); struct seq_file; void smp_bogo(struct seq_file *); void smp_info(struct seq_file *); #ifdef CONFIG_HOTPLUG_CPU extern int __cpu_disable(void); extern void __cpu_die(unsigned int cpu); Loading
arch/sparc/include/asm/system_64.h +0 −4 Original line number Diff line number Diff line Loading @@ -29,10 +29,6 @@ enum sparc_cpu { /* This cannot ever be a sun4c :) That's just history. */ #define ARCH_SUN4C 0 extern const char *sparc_cpu_type; extern const char *sparc_fpu_type; extern const char *sparc_pmu_type; extern char reboot_command[]; /* These are here in an effort to more fully work around Spitfire Errata Loading
arch/sparc/kernel/cpu.c +124 −3 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) */ #include <linux/seq_file.h> #include <linux/kernel.h> #include <linux/module.h> #include <linux/init.h> Loading @@ -11,7 +12,9 @@ #include <linux/threads.h> #include <asm/spitfire.h> #include <asm/pgtable.h> #include <asm/oplib.h> #include <asm/setup.h> #include <asm/page.h> #include <asm/head.h> #include <asm/psr.h> Loading @@ -23,6 +26,9 @@ DEFINE_PER_CPU(cpuinfo_sparc, __cpu_data) = { 0 }; EXPORT_PER_CPU_SYMBOL(__cpu_data); int ncpus_probed; unsigned int fsr_storage; struct cpu_info { int psr_vers; const char *name; Loading Loading @@ -247,11 +253,10 @@ static const struct manufacturer_info __initconst manufacturer_info[] = { * machine type value into consideration too. I will fix this. */ const char *sparc_cpu_type; const char *sparc_fpu_type; static const char *sparc_cpu_type; static const char *sparc_fpu_type; const char *sparc_pmu_type; unsigned int fsr_storage; static void set_cpu_and_fpu(int psr_impl, int psr_vers, int fpu_vers) { Loading Loading @@ -312,6 +317,122 @@ static void set_cpu_and_fpu(int psr_impl, int psr_vers, int fpu_vers) sparc_pmu_type = "Unknown PMU"; } #ifdef CONFIG_SPARC32 static int show_cpuinfo(struct seq_file *m, void *__unused) { seq_printf(m, "cpu\t\t: %s\n" "fpu\t\t: %s\n" "promlib\t\t: Version %d Revision %d\n" "prom\t\t: %d.%d\n" "type\t\t: %s\n" "ncpus probed\t: %d\n" "ncpus active\t: %d\n" #ifndef CONFIG_SMP "CPU0Bogo\t: %lu.%02lu\n" "CPU0ClkTck\t: %ld\n" #endif , sparc_cpu_type, sparc_fpu_type , romvec->pv_romvers, prom_rev, romvec->pv_printrev >> 16, romvec->pv_printrev & 0xffff, &cputypval[0], ncpus_probed, num_online_cpus() #ifndef CONFIG_SMP , cpu_data(0).udelay_val/(500000/HZ), (cpu_data(0).udelay_val/(5000/HZ)) % 100, cpu_data(0).clock_tick #endif ); #ifdef CONFIG_SMP smp_bogo(m); #endif mmu_info(m); #ifdef CONFIG_SMP smp_info(m); #endif return 0; } #endif /* CONFIG_SPARC32 */ #ifdef CONFIG_SPARC64 unsigned int dcache_parity_tl1_occurred; unsigned int icache_parity_tl1_occurred; static int show_cpuinfo(struct seq_file *m, void *__unused) { seq_printf(m, "cpu\t\t: %s\n" "fpu\t\t: %s\n" "pmu\t\t: %s\n" "prom\t\t: %s\n" "type\t\t: %s\n" "ncpus probed\t: %d\n" "ncpus active\t: %d\n" "D$ parity tl1\t: %u\n" "I$ parity tl1\t: %u\n" #ifndef CONFIG_SMP "Cpu0ClkTck\t: %016lx\n" #endif , sparc_cpu_type, sparc_fpu_type, sparc_pmu_type, prom_version, ((tlb_type == hypervisor) ? "sun4v" : "sun4u"), ncpus_probed, num_online_cpus(), dcache_parity_tl1_occurred, icache_parity_tl1_occurred #ifndef CONFIG_SMP , cpu_data(0).clock_tick #endif ); #ifdef CONFIG_SMP smp_bogo(m); #endif mmu_info(m); #ifdef CONFIG_SMP smp_info(m); #endif return 0; } #endif /* CONFIG_SPARC64 */ static void *c_start(struct seq_file *m, loff_t *pos) { /* The pointer we are returning is arbitrary, * it just has to be non-NULL and not IS_ERR * in the success case. */ return *pos == 0 ? &c_start : NULL; } static void *c_next(struct seq_file *m, void *v, loff_t *pos) { ++*pos; return c_start(m, pos); } static void c_stop(struct seq_file *m, void *v) { } const struct seq_operations cpuinfo_op = { .start =c_start, .next = c_next, .stop = c_stop, .show = show_cpuinfo, }; #ifdef CONFIG_SPARC32 void __cpuinit cpu_probe(void) { Loading
arch/sparc/kernel/kernel.h +1 −3 Original line number Diff line number Diff line Loading @@ -6,11 +6,9 @@ #include <asm/traps.h> /* cpu.c */ extern const char *sparc_cpu_type; extern const char *sparc_pmu_type; extern const char *sparc_fpu_type; extern unsigned int fsr_storage; extern int ncpus_probed; #ifdef CONFIG_SPARC32 /* cpu.c */ Loading