struct kmem_cache *task_xstate_cachep = NULL;
  unsigned int xstate_size;
  
 +#ifdef CONFIG_CC_STACKPROTECTOR
 +unsigned long __stack_chk_guard __read_mostly;
 +EXPORT_SYMBOL(__stack_chk_guard);
 +#endif
 +
+ /*
+  * this gets called so that we can store lazy state into memory and copy the
+  * current task into the new thread.
+  */
  int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src)
  {
+ #ifdef CONFIG_SUPERH32
+       unlazy_fpu(src, task_pt_regs(src));
+ #endif
        *dst = *src;
  
        if (src->thread.xstate) {
 
                put_cpu();
                kfree(bp);
        }
+ 
+       drop_fpu(me);
  }
  
 -void show_regs(struct pt_regs *regs)
 -{
 -      show_registers(regs);
 -      show_trace(NULL, regs, (unsigned long *)kernel_stack_pointer(regs), 0);
 -}
 -
  void show_regs_common(void)
  {
        const char *vendor, *product, *board;