ia32_save_state(p);
if (clone_flags & CLONE_SETTLS)
retval = ia32_clone_tls(p, child_ptregs);
+
+ /* Copy partially mapped page list */
+ if (!retval)
+ retval = ia32_copy_partial_page_list(p, clone_flags);
}
#endif
return error;
}
-void
-ia64_set_personality (struct elf64_hdr *elf_ex, int ibcs2_interpreter)
-{
- set_personality(PER_LINUX);
- if (elf_ex->e_flags & EF_IA_64_LINUX_EXECUTABLE_STACK)
- current->thread.flags |= IA64_THREAD_XSTACK;
- else
- current->thread.flags &= ~IA64_THREAD_XSTACK;
-}
-
pid_t
kernel_thread (int (*fn)(void *), void *arg, unsigned long flags)
{
/* drop floating-point and debug-register state if it exists: */
current->thread.flags &= ~(IA64_THREAD_FPH_VALID | IA64_THREAD_DBG_VALID);
ia64_drop_fpu(current);
+ if (IS_IA32_PROCESS(ia64_task_regs(current)))
+ ia32_drop_partial_page_list(current);
}
/*
if (current->thread.flags & IA64_THREAD_DBG_VALID)
pfm_release_debug_registers(current);
#endif
+ if (IS_IA32_PROCESS(ia64_task_regs(current)))
+ ia32_drop_partial_page_list(current);
}
unsigned long