diff options
author | Jeremy Fitzhardinge <jeremy@goop.org> | 2008-01-30 13:33:15 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-01-30 13:33:15 +0100 |
commit | 28c6075c72a312986f6d7802005251bdb91ca80c (patch) | |
tree | dabaf04448ba79f98b61bfd975868d3c87a1ab24 /include/asm-x86/paravirt.h | |
parent | 60b3f626dee9f0b1b656918e40e211822c18200d (diff) |
x86/paravirt: make set_pud operation common
Remove duplicate set_pud()s.
Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'include/asm-x86/paravirt.h')
-rw-r--r-- | include/asm-x86/paravirt.h | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/include/asm-x86/paravirt.h b/include/asm-x86/paravirt.h index d9957ece49b..c56b17a5eba 100644 --- a/include/asm-x86/paravirt.h +++ b/include/asm-x86/paravirt.h @@ -1086,17 +1086,19 @@ static inline pmdval_t pmd_val(pmd_t pmd) return ret; } -#endif /* PAGETABLE_LEVELS >= 3 */ - -#ifdef CONFIG_X86_PAE -static inline void set_pud(pud_t *pudp, pud_t pudval) +static inline void set_pud(pud_t *pudp, pud_t pud) { - PVOP_VCALL3(pv_mmu_ops.set_pud, pudp, - pudval.pgd.pgd, pudval.pgd.pgd >> 32); -} + pudval_t val = native_pud_val(pud); -#endif /* CONFIG_X86_PAE */ + if (sizeof(pudval_t) > sizeof(long)) + PVOP_VCALL3(pv_mmu_ops.set_pud, pudp, + val, (u64)val >> 32); + else + PVOP_VCALL2(pv_mmu_ops.set_pud, pudp, + val); +} +#endif /* PAGETABLE_LEVELS >= 3 */ /* Lazy mode for batching updates / context switch */ enum paravirt_lazy_mode { |