]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - include/asm-x86/mmu_context_64.h
devcgroup: fix odd behaviour when writing 'a' to devices.allow
[linux-2.6-omap-h63xx.git] / include / asm-x86 / mmu_context_64.h
index 0cce83a78378ec20a12a348c8b907d4b2386a6cf..ca44c71e7fb396a93bcdb0483af52c9fc0900d70 100644 (file)
@@ -7,7 +7,9 @@
 #include <asm/pda.h>
 #include <asm/pgtable.h>
 #include <asm/tlbflush.h>
+#ifndef CONFIG_PARAVIRT
 #include <asm-generic/mm_hooks.h>
+#endif
 
 /*
  * possibly do the LDT unload here?
@@ -18,17 +20,12 @@ void destroy_context(struct mm_struct *mm);
 static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
 {
 #ifdef CONFIG_SMP
-       if (read_pda(mmu_state) == TLBSTATE_OK) 
+       if (read_pda(mmu_state) == TLBSTATE_OK)
                write_pda(mmu_state, TLBSTATE_LAZY);
 #endif
 }
 
-static inline void load_cr3(pgd_t *pgd)
-{
-       asm volatile("movq %0,%%cr3" :: "r" (__pa(pgd)) : "memory");
-}
-
-static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next, 
+static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
                             struct task_struct *tsk)
 {
        unsigned cpu = smp_processor_id();
@@ -42,33 +39,34 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
                cpu_set(cpu, next->cpu_vm_mask);
                load_cr3(next->pgd);
 
-               if (unlikely(next->context.ldt != prev->context.ldt)) 
-                       load_LDT_nolock(&next->context, cpu);
+               if (unlikely(next->context.ldt != prev->context.ldt))
+                       load_LDT_nolock(&next->context);
        }
 #ifdef CONFIG_SMP
        else {
                write_pda(mmu_state, TLBSTATE_OK);
                if (read_pda(active_mm) != next)
-                       out_of_line_bug();
+                       BUG();
                if (!cpu_test_and_set(cpu, next->cpu_vm_mask)) {
-                       /* We were in lazy tlb mode and leave_mm disabled 
+                       /* We were in lazy tlb mode and leave_mm disabled
                         * tlb flush IPI delivery. We must reload CR3
                         * to make sure to use no freed page tables.
                         */
                        load_cr3(next->pgd);
-                       load_LDT_nolock(&next->context, cpu);
+                       load_LDT_nolock(&next->context);
                }
        }
 #endif
 }
 
-#define deactivate_mm(tsk,mm)  do { \
-       load_gs_index(0); \
-       asm volatile("movl %0,%%fs"::"r"(0));  \
-} while(0)
+#define deactivate_mm(tsk, mm)                 \
+do {                                           \
+       load_gs_index(0);                       \
+       asm volatile("movl %0,%%fs"::"r"(0));   \
+} while (0)
 
-#define activate_mm(prev, next) \
-       switch_mm((prev),(next),NULL)
+#define activate_mm(prev, next)                        \
+       switch_mm((prev), (next), NULL)
 
 
 #endif