#ifdefined(CONFIG_PPC32) staticinlinevoid switch_mm_pgdir(struct task_struct *tsk, struct mm_struct *mm)
{ /* 32-bit keeps track of the current PGDIR in the thread struct */
tsk->thread.pgdir = mm->pgd; #ifdef CONFIG_PPC_BOOK3S_32
tsk->thread.sr0 = mm->context.sr0; #endif #ifdefined(CONFIG_BOOKE) && defined(CONFIG_PPC_KUAP)
tsk->thread.pid = mm->context.id; #endif
} #elifdefined(CONFIG_PPC_BOOK3E_64) staticinlinevoid switch_mm_pgdir(struct task_struct *tsk, struct mm_struct *mm)
{ /* 64-bit Book3E keeps track of current PGD in the PACA */
get_paca()->pgd = mm->pgd; #ifdef CONFIG_PPC_KUAP
tsk->thread.pid = mm->context.id; #endif
} #else staticinlinevoid switch_mm_pgdir(struct task_struct *tsk, struct mm_struct *mm) { } #endif
void switch_mm_irqs_off(struct mm_struct *prev, struct mm_struct *next, struct task_struct *tsk)
{ int cpu = smp_processor_id(); bool new_on_cpu = false;
/* Mark this context has been used on the new CPU */ if (!cpumask_test_cpu(cpu, mm_cpumask(next))) {
VM_WARN_ON_ONCE(next == &init_mm);
cpumask_set_cpu(cpu, mm_cpumask(next));
inc_mm_active_cpus(next);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.