Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / include / asm-ppc / mmu_context.h
index 9222fa6..4f152cc 100644 (file)
@@ -63,7 +63,7 @@ static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
 #define LAST_CONTEXT           255
 #define FIRST_CONTEXT          1
 
-#elif defined(CONFIG_E500)
+#elif defined(CONFIG_E200) || defined(CONFIG_E500)
 #define NO_CONTEXT             256
 #define LAST_CONTEXT           255
 #define FIRST_CONTEXT          1
@@ -149,6 +149,7 @@ static inline void get_mmu_context(struct mm_struct *mm)
  */
 static inline void destroy_context(struct mm_struct *mm)
 {
+       preempt_disable();
        if (mm->context != NO_CONTEXT) {
                clear_bit(mm->context, context_map);
                mm->context = NO_CONTEXT;
@@ -156,19 +157,18 @@ static inline void destroy_context(struct mm_struct *mm)
                atomic_inc(&nr_free_contexts);
 #endif
        }
+       preempt_enable();
 }
 
 static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
                             struct task_struct *tsk)
 {
 #ifdef CONFIG_ALTIVEC
-       asm volatile (
- BEGIN_FTR_SECTION
-       "dssall;\n"
+       if (cpu_has_feature(CPU_FTR_ALTIVEC))
+       asm volatile ("dssall;\n"
 #ifndef CONFIG_POWER4
         "sync;\n" /* G4 needs a sync here, G5 apparently not */
 #endif
- END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC)
         : : );
 #endif /* CONFIG_ALTIVEC */