Merge branch 'linux-2.6' into for-linus
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / arch / powerpc / kernel / cputable.c
index 6fdfaa4a82b8bc20f588190e9185071c3c14e495..1e4ed0731d15d02dab603f7228474219db20efdd 100644 (file)
@@ -42,6 +42,7 @@ extern void __setup_cpu_745x(unsigned long offset, struct cpu_spec* spec);
 #endif /* CONFIG_PPC32 */
 #ifdef CONFIG_PPC64
 extern void __setup_cpu_ppc970(unsigned long offset, struct cpu_spec* spec);
+extern void __setup_cpu_ppc970MP(unsigned long offset, struct cpu_spec* spec);
 extern void __restore_cpu_ppc970(void);
 #endif /* CONFIG_PPC64 */
 
@@ -222,7 +223,7 @@ static struct cpu_spec cpu_specs[] = {
                .icache_bsize           = 128,
                .dcache_bsize           = 128,
                .num_pmcs               = 8,
-               .cpu_setup              = __setup_cpu_ppc970,
+               .cpu_setup              = __setup_cpu_ppc970MP,
                .cpu_restore            = __restore_cpu_ppc970,
                .oprofile_cpu_type      = "ppc64/970",
                .oprofile_type          = PPC_OPROFILE_POWER4,
@@ -1202,14 +1203,13 @@ struct cpu_spec *identify_cpu(unsigned long offset)
        return NULL;
 }
 
-void do_feature_fixups(unsigned long offset, unsigned long value,
-                      void *fixup_start, void *fixup_end)
+void do_feature_fixups(unsigned long value, void *fixup_start, void *fixup_end)
 {
        struct fixup_entry {
                unsigned long   mask;
                unsigned long   value;
-               unsigned int    *start;
-               unsigned int    *end;
+               long            start_off;
+               long            end_off;
        } *fcur, *fend;
 
        fcur = fixup_start;
@@ -1224,8 +1224,8 @@ void do_feature_fixups(unsigned long offset, unsigned long value,
                /* These PTRRELOCs will disappear once the new scheme for
                 * modules and vdso is implemented
                 */
-               pstart = PTRRELOC(fcur->start);
-               pend = PTRRELOC(fcur->end);
+               pstart = ((unsigned int *)fcur) + (fcur->start_off / 4);
+               pend = ((unsigned int *)fcur) + (fcur->end_off / 4);
 
                for (p = pstart; p < pend; p++) {
                        *p = 0x60000000u;