Blackfin/ipipe: introduce support for CONFIG_MPU
Signed-off-by: Philippe Gerum <rpm@xenomai.org> Signed-off-by: Li Yi <yi.li@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
This commit is contained in:
parent
7d4a005c43
commit
4815b883ed
|
@ -66,8 +66,8 @@ activate_l1stack(struct mm_struct *mm, unsigned long sp_base)
|
|||
|
||||
#define activate_mm(prev, next) switch_mm(prev, next, NULL)
|
||||
|
||||
static inline void switch_mm(struct mm_struct *prev_mm, struct mm_struct *next_mm,
|
||||
struct task_struct *tsk)
|
||||
static inline void __switch_mm(struct mm_struct *prev_mm, struct mm_struct *next_mm,
|
||||
struct task_struct *tsk)
|
||||
{
|
||||
#ifdef CONFIG_MPU
|
||||
unsigned int cpu = smp_processor_id();
|
||||
|
@ -95,7 +95,24 @@ static inline void switch_mm(struct mm_struct *prev_mm, struct mm_struct *next_m
|
|||
#endif
|
||||
}
|
||||
|
||||
#ifdef CONFIG_IPIPE
|
||||
#define lock_mm_switch(flags) local_irq_save_hw_cond(flags)
|
||||
#define unlock_mm_switch(flags) local_irq_restore_hw_cond(flags)
|
||||
#else
|
||||
#define lock_mm_switch(flags) do { (void)(flags); } while (0)
|
||||
#define unlock_mm_switch(flags) do { (void)(flags); } while (0)
|
||||
#endif /* CONFIG_IPIPE */
|
||||
|
||||
#ifdef CONFIG_MPU
|
||||
static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
|
||||
struct task_struct *tsk)
|
||||
{
|
||||
unsigned long flags;
|
||||
lock_mm_switch(flags);
|
||||
__switch_mm(prev, next, tsk);
|
||||
unlock_mm_switch(flags);
|
||||
}
|
||||
|
||||
static inline void protect_page(struct mm_struct *mm, unsigned long addr,
|
||||
unsigned long flags)
|
||||
{
|
||||
|
@ -128,6 +145,12 @@ static inline void update_protections(struct mm_struct *mm)
|
|||
set_mask_dcplbs(mm->context.page_rwx_mask, cpu);
|
||||
}
|
||||
}
|
||||
#else /* !CONFIG_MPU */
|
||||
static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
|
||||
struct task_struct *tsk)
|
||||
{
|
||||
__switch_mm(prev, next, tsk);
|
||||
}
|
||||
#endif
|
||||
|
||||
static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
|
||||
|
@ -173,4 +196,10 @@ static inline void destroy_context(struct mm_struct *mm)
|
|||
#endif
|
||||
}
|
||||
|
||||
#define ipipe_mm_switch_protect(flags) \
|
||||
local_irq_save_hw_cond(flags)
|
||||
|
||||
#define ipipe_mm_switch_unprotect(flags) \
|
||||
local_irq_restore_hw_cond(flags)
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue