return 0;
 }
 
+static void setup_ksp_vsid(struct task_struct *p, unsigned long sp)
+{
+#ifdef CONFIG_PPC_STD_MMU_64
+       unsigned long sp_vsid;
+       unsigned long llp = mmu_psize_defs[mmu_linear_psize].sllp;
+
+       if (mmu_has_feature(MMU_FTR_1T_SEGMENT))
+               sp_vsid = get_kernel_vsid(sp, MMU_SEGSIZE_1T)
+                       << SLB_VSID_SHIFT_1T;
+       else
+               sp_vsid = get_kernel_vsid(sp, MMU_SEGSIZE_256M)
+                       << SLB_VSID_SHIFT;
+       sp_vsid |= SLB_VSID_KERNEL | llp;
+       p->thread.ksp_vsid = sp_vsid;
+#endif
+}
+
 /*
  * Copy a thread..
  */
        p->thread.vr_save_area = NULL;
 #endif
 
-#ifdef CONFIG_PPC_STD_MMU_64
-       {
-               unsigned long sp_vsid;
-               unsigned long llp = mmu_psize_defs[mmu_linear_psize].sllp;
+       setup_ksp_vsid(p, sp);
 
-               if (mmu_has_feature(MMU_FTR_1T_SEGMENT))
-                       sp_vsid = get_kernel_vsid(sp, MMU_SEGSIZE_1T)
-                               << SLB_VSID_SHIFT_1T;
-               else
-                       sp_vsid = get_kernel_vsid(sp, MMU_SEGSIZE_256M)
-                               << SLB_VSID_SHIFT;
-               sp_vsid |= SLB_VSID_KERNEL | llp;
-               p->thread.ksp_vsid = sp_vsid;
-       }
-#endif /* CONFIG_PPC_STD_MMU_64 */
 #ifdef CONFIG_PPC64 
        if (cpu_has_feature(CPU_FTR_DSCR)) {
                p->thread.dscr_inherit = current->thread.dscr_inherit;