process.c (05b98791ec60f6a1862c58b3424f6aaeb00dfb72) process.c (ed1cd6deb013a11959d17a94e35ce159197632da)
1/*
2 * Derived from "arch/i386/kernel/process.c"
3 * Copyright (C) 1995 Linus Torvalds
4 *
5 * Updated and modified by Cort Dougan (cort@cs.nmt.edu) and
6 * Paul Mackerras (paulus@cs.anu.edu.au)
7 *
8 * PowerPC version

--- 1620 unchanged lines hidden (view full) ---

1629{
1630 struct pt_regs *childregs, *kregs;
1631 extern void ret_from_fork(void);
1632 extern void ret_from_kernel_thread(void);
1633 void (*f)(void);
1634 unsigned long sp = (unsigned long)task_stack_page(p) + THREAD_SIZE;
1635 struct thread_info *ti = task_thread_info(p);
1636
1/*
2 * Derived from "arch/i386/kernel/process.c"
3 * Copyright (C) 1995 Linus Torvalds
4 *
5 * Updated and modified by Cort Dougan (cort@cs.nmt.edu) and
6 * Paul Mackerras (paulus@cs.anu.edu.au)
7 *
8 * PowerPC version

--- 1620 unchanged lines hidden (view full) ---

1629{
1630 struct pt_regs *childregs, *kregs;
1631 extern void ret_from_fork(void);
1632 extern void ret_from_kernel_thread(void);
1633 void (*f)(void);
1634 unsigned long sp = (unsigned long)task_stack_page(p) + THREAD_SIZE;
1635 struct thread_info *ti = task_thread_info(p);
1636
1637 klp_init_thread_info(ti);
1637 klp_init_thread_info(p);
1638
1639 /* Copy registers */
1640 sp -= sizeof(struct pt_regs);
1641 childregs = (struct pt_regs *) sp;
1642 if (unlikely(p->flags & PF_KTHREAD)) {
1643 /* kernel thread */
1644 memset(childregs, 0, sizeof(struct pt_regs));
1645 childregs->gpr[1] = sp + sizeof(struct pt_regs);

--- 593 unchanged lines hidden ---
1638
1639 /* Copy registers */
1640 sp -= sizeof(struct pt_regs);
1641 childregs = (struct pt_regs *) sp;
1642 if (unlikely(p->flags & PF_KTHREAD)) {
1643 /* kernel thread */
1644 memset(childregs, 0, sizeof(struct pt_regs));
1645 childregs->gpr[1] = sp + sizeof(struct pt_regs);

--- 593 unchanged lines hidden ---