]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ARC: [ASID] activate_mm() == switch_mm()
authorVineet Gupta <vgupta@synopsys.com>
Thu, 25 Jul 2013 00:31:08 +0000 (17:31 -0700)
committerVineet Gupta <vgupta@synopsys.com>
Tue, 30 Jul 2013 08:57:34 +0000 (01:57 -0700)
ASID allocation changes/2

Use the fact that switch_mm() and activate_mm() are exactly same code
now while acknowledging the semantical difference in comment

Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
arch/arc/include/asm/mmu_context.h

index 2079c883c704b1a983e69b831ca8ab6768be880f..ad8fc807f534c7492cbbe7224b085c2e113f49b3 100644 (file)
@@ -166,6 +166,15 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
        get_new_mmu_context(next);
 }
 
+/*
+ * Called at the time of execve() to get a new ASID
+ * Note the subtlety here: get_new_mmu_context() behaves differently here
+ * vs. in switch_mm(). Here it always returns a new ASID, because mm has
+ * an unallocated "initial" value, while in latter, it moves to a new ASID,
+ * only if it was unallocated
+ */
+#define activate_mm(prev, next)                switch_mm(prev, next, NULL)
+
 static inline void destroy_context(struct mm_struct *mm)
 {
        unsigned long flags;
@@ -187,17 +196,6 @@ static inline void destroy_context(struct mm_struct *mm)
  */
 #define deactivate_mm(tsk, mm)   do { } while (0)
 
-static inline void activate_mm(struct mm_struct *prev, struct mm_struct *next)
-{
-#ifndef CONFIG_SMP
-       write_aux_reg(ARC_REG_SCRATCH_DATA0, next->pgd);
-#endif
-
-       /* Unconditionally get a new ASID */
-       get_new_mmu_context(next);
-
-}
-
 #define enter_lazy_tlb(mm, tsk)
 
 #endif /* __ASM_ARC_MMU_CONTEXT_H */