Main Page | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

ppc/kernel/process.c File Reference

#include <linux/errno.h>
#include <linux/sched.h>
#include <linux/kernel.h>
#include <linux/mm.h>
#include <linux/smp.h>
#include <linux/smp_lock.h>
#include <linux/stddef.h>
#include <linux/unistd.h>
#include <linux/ptrace.h>
#include <linux/malloc.h>
#include <linux/user.h>
#include <linux/elf.h>
#include <linux/init.h>
#include <asm/pgtable.h>
#include <asm/uaccess.h>
#include <asm/system.h>
#include <asm/io.h>
#include <asm/processor.h>
#include <asm/mmu.h>
#include <asm/prom.h>
#include <asm/mmu_context.h>

Include dependency graph for ppc/kernel/process.c:

Go to the source code of this file.

Functions

int dump_fpu (struct pt_regs *regs, elf_fpregset_t *fpregs)
int dump_altivec (struct pt_regs *regs, elf_vrregset_t *vrregs)
unsigned long _get_SP (void)
unsigned long kernel_stack_top (struct task_struct *tsk)
unsigned long task_top (struct task_struct *tsk)
void enable_kernel_fp (void)
int check_stack (struct task_struct *tsk)
void _switch_to (struct task_struct *prev, struct task_struct *new, struct task_struct **last)
void print_bits (unsigned int val, struct bits *bits)
void show_regs (struct pt_regs *regs)
void instruction_dump (unsigned long *pc)
void exit_thread (void)
void flush_thread (void)
void release_thread (struct task_struct *t)
int copy_thread (int nr, unsigned long clone_flags, unsigned long usp, struct task_struct *p, struct pt_regs *regs)
static void shove_aux_table (unsigned long sp)
void start_thread (struct pt_regs *regs, unsigned long nip, unsigned long sp)
asmlinkage int sys_clone (int p1, int p2, int p3, int p4, int p5, int p6, struct pt_regs *regs)
asmlinkage int sys_fork (int p1, int p2, int p3, int p4, int p5, int p6, struct pt_regs *regs)
asmlinkage int sys_vfork (int p1, int p2, int p3, int p4, int p5, int p6, struct pt_regs *regs)
asmlinkage int sys_execve (unsigned long a0, unsigned long a1, unsigned long a2, unsigned long a3, unsigned long a4, unsigned long a5, struct pt_regs *regs)
void print_backtrace (unsigned long *sp)

Variables

task_struct * last_task_used_math = NULL
task_struct * last_task_used_altivec = NULL
static struct vm_area_struct init_mmap = INIT_MMAP
static struct fs_struct init_fs = INIT_FS
static struct files_struct init_files = INIT_FILES
static struct signal_struct init_signals = INIT_SIGNALS
mm_struct init_mm = INIT_MM
task_union init_task_union = { INIT_TASK }
task_struct * current_set [NR_CPUS] = {&init_task, }
bits msr_bits []


Function Documentation

unsigned long _get_SP void   ) 
 

Referenced by check_stack().

void _switch_to struct task_struct *  prev,
struct task_struct *  new,
struct task_struct **  last
 

Definition at line 186 of file ppc/kernel/process.c.

References _disable_interrupts(), _enable_interrupts(), _switch(), check_stack(), current, current_set, giveup_fpu(), MSR_FP, printk, s, and smp_processor_id.

Here is the call graph for this function:

int check_stack struct task_struct *  tsk  ) 
 

Definition at line 123 of file ppc/kernel/process.c.

References _get_SP(), current, i, kernel_stack_top(), panic(), printk, ret, stack_top, and task_top().

Referenced by __verify_write(), and _switch_to().

Here is the call graph for this function:

int copy_thread int  nr,
unsigned long  clone_flags,
unsigned long  usp,
struct task_struct *  p,
struct pt_regs regs
 

Definition at line 338 of file ppc/kernel/process.c.

References current, giveup_altivec(), giveup_fpu(), pt_regs::gpr, long, memcpy, pt_regs::msr, MSR_FP, MSR_KERNEL, MSR_PR, MSR_VEC, pt_regs::nip, NO_PROC_ID, and ret_from_syscall().

Here is the call graph for this function:

int dump_altivec struct pt_regs regs,
elf_vrregset_t vrregs
 

int dump_fpu struct pt_regs regs,
elf_fpregset_t fpregs
 

Definition at line 442 of file alpha/kernel/process.c.

void enable_kernel_fp void   ) 
 

Definition at line 110 of file ppc/kernel/process.c.

References current, giveup_fpu(), last_task_used_math, MSR_FP, and NULL.

Referenced by fix_alignment().

Here is the call graph for this function:

void exit_thread void   ) 
 

Definition at line 313 of file ppc/kernel/process.c.

References current, last_task_used_altivec, last_task_used_math, and NULL.

void flush_thread void   ) 
 

Definition at line 321 of file ppc/kernel/process.c.

References current, last_task_used_altivec, last_task_used_math, and NULL.

void instruction_dump unsigned long pc  ) 
 

Definition at line 295 of file ppc/kernel/process.c.

References __get_user, i, long, p, and printk.

Referenced by die_if_kernel(), and do_memaccess_unaligned().

unsigned long kernel_stack_top struct task_struct *  tsk  ) 
 

Definition at line 64 of file ppc/kernel/process.c.

Referenced by check_stack().

void print_backtrace unsigned long sp  ) 
 

Definition at line 532 of file ppc/kernel/process.c.

References __get_user, cnt, i, and printk.

Referenced by _exception(), bad_page_fault(), MachineCheckException(), and StackOverflow().

void print_bits unsigned int  val,
struct bits bits
 

Definition at line 229 of file ppc/kernel/process.c.

References bits::bit, bits::name, and printk.

Referenced by show_regs().

void release_thread struct task_struct *  t  ) 
 

Definition at line 330 of file ppc/kernel/process.c.

static void shove_aux_table unsigned long  sp  )  [inline, static]
 

Definition at line 412 of file ppc/kernel/process.c.

References __get_user, __put_user, AT_NULL, e, long, NULL, offset, and p.

Referenced by start_thread().

void show_regs struct pt_regs regs  ) 
 

Definition at line 254 of file ppc/kernel/process.c.

References __get_user, current, pt_regs::gpr, i, last_task_used_altivec, last_task_used_math, pt_regs::link, pt_regs::msr, pt_regs::nip, out, print_bits(), printk, r, pt_regs::trap, and pt_regs::xer.

Here is the call graph for this function:

void start_thread struct pt_regs regs,
unsigned long  nip,
unsigned long  sp
 

Definition at line 449 of file ppc/kernel/process.c.

References current, last_task_used_altivec, last_task_used_math, MSR_USER, set_fs, shove_aux_table(), and USER_DS.

Here is the call graph for this function:

asmlinkage int sys_clone int  p1,
int  p2,
int  p3,
int  p4,
int  p5,
int  p6,
struct pt_regs regs
 

Definition at line 463 of file ppc/kernel/process.c.

References current, do_fork(), pt_regs::gpr, init_task, lock_kernel, res, and unlock_kernel.

Here is the call graph for this function:

asmlinkage int sys_execve unsigned long  a0,
unsigned long  a1,
unsigned long  a2,
unsigned long  a3,
unsigned long  a4,
unsigned long  a5,
struct pt_regs regs
 

Definition at line 506 of file ppc/kernel/process.c.

References current, do_execve(), error, filename, getname(), giveup_altivec(), giveup_fpu(), lock_kernel, pt_regs::msr, MSR_FP, MSR_VEC, out, and unlock_kernel.

Here is the call graph for this function:

asmlinkage int sys_fork int  p1,
int  p2,
int  p3,
int  p4,
int  p5,
int  p6,
struct pt_regs regs
 

Definition at line 482 of file ppc/kernel/process.c.

References current, do_fork(), pt_regs::gpr, init_task, res, and SIGCHLD.

Here is the call graph for this function:

asmlinkage int sys_vfork int  p1,
int  p2,
int  p3,
int  p4,
int  p5,
int  p6,
struct pt_regs regs
 

Definition at line 500 of file ppc/kernel/process.c.

References CLONE_VFORK, CLONE_VM, do_fork(), pt_regs::gpr, and SIGCHLD.

Here is the call graph for this function:

unsigned long task_top struct task_struct *  tsk  ) 
 

Definition at line 70 of file ppc/kernel/process.c.

Referenced by check_stack().


Variable Documentation

struct task_struct* current_set[NR_CPUS] = {&init_task, }
 

Definition at line 58 of file ppc/kernel/process.c.

Referenced by __initfunc(), _switch_to(), show_mem(), and smp_boot_cpus().

struct files_struct init_files = INIT_FILES [static]
 

Definition at line 53 of file ppc/kernel/process.c.

struct fs_struct init_fs = INIT_FS [static]
 

Definition at line 52 of file ppc/kernel/process.c.

struct mm_struct init_mm = INIT_MM
 

Definition at line 55 of file ppc/kernel/process.c.

struct vm_area_struct init_mmap = INIT_MMAP [static]
 

Definition at line 51 of file ppc/kernel/process.c.

struct signal_struct init_signals = INIT_SIGNALS [static]
 

Definition at line 54 of file ppc/kernel/process.c.

union task_union init_task_union = { INIT_TASK }
 

Definition at line 56 of file ppc/kernel/process.c.

struct task_struct* last_task_used_altivec = NULL
 

Definition at line 50 of file ppc/kernel/process.c.

Referenced by exit_thread(), flush_thread(), show_regs(), and start_thread().

struct task_struct* last_task_used_math = NULL
 

Definition at line 49 of file ppc/kernel/process.c.

struct bits msr_bits[]
 

Initial value:

 {
        {"VEC", MSR_VEC},
        {"EE", MSR_EE},
        {"PR", MSR_PR},
        {"FP", MSR_FP},
        {"IR", MSR_IR},
        {"DR", MSR_DR},
        {"ME", MSR_ME},
        {0, 0}
}

Definition at line 243 of file ppc/kernel/process.c.