Commit 43ed84a8 authored by Benjamin Herrenschmidt's avatar Benjamin Herrenschmidt Committed by Michael Ellerman

powerpc/mm: Move pgdir setting into a helper

Makes switch_mm_irqs_off() a bit more readable
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent 3e23a12b
...@@ -77,6 +77,26 @@ extern void switch_cop(struct mm_struct *next); ...@@ -77,6 +77,26 @@ extern void switch_cop(struct mm_struct *next);
extern int use_cop(unsigned long acop, struct mm_struct *mm); extern int use_cop(unsigned long acop, struct mm_struct *mm);
extern void drop_cop(unsigned long acop, struct mm_struct *mm); extern void drop_cop(unsigned long acop, struct mm_struct *mm);
#if defined(CONFIG_PPC32)
static inline void 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;
}
#elif defined(CONFIG_PPC_BOOK3E_64)
static inline void 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;
}
#else
static inline void switch_mm_pgdir(struct task_struct *tsk,
struct mm_struct *mm) { }
#endif
/* /*
* switch_mm is the entry point called from the architecture independent * switch_mm is the entry point called from the architecture independent
* code in kernel/sched/core.c * code in kernel/sched/core.c
...@@ -111,15 +131,9 @@ static inline void switch_mm_irqs_off(struct mm_struct *prev, ...@@ -111,15 +131,9 @@ static inline void switch_mm_irqs_off(struct mm_struct *prev,
new_on_cpu = true; new_on_cpu = true;
} }
/* 32-bit keeps track of the current PGDIR in the thread struct */ /* Some subarchs need to track the PGD elsewhere */
#ifdef CONFIG_PPC32 switch_mm_pgdir(tsk, next);
tsk->thread.pgdir = next->pgd;
#endif /* CONFIG_PPC32 */
/* 64-bit Book3E keeps track of current PGD in the PACA */
#ifdef CONFIG_PPC_BOOK3E_64
get_paca()->pgd = next->pgd;
#endif
/* Nothing else to do if we aren't actually switching */ /* Nothing else to do if we aren't actually switching */
if (prev == next) if (prev == next)
return; return;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment