mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-11 16:29:05 +00:00
27 lines
800 B
C
27 lines
800 B
C
|
#ifndef _ASM_POWERPC_MEMBARRIER_H
|
||
|
#define _ASM_POWERPC_MEMBARRIER_H
|
||
|
|
||
|
static inline void membarrier_arch_switch_mm(struct mm_struct *prev,
|
||
|
struct mm_struct *next,
|
||
|
struct task_struct *tsk)
|
||
|
{
|
||
|
/*
|
||
|
* Only need the full barrier when switching between processes.
|
||
|
* Barrier when switching from kernel to userspace is not
|
||
|
* required here, given that it is implied by mmdrop(). Barrier
|
||
|
* when switching from userspace to kernel is not needed after
|
||
|
* store to rq->curr.
|
||
|
*/
|
||
|
if (likely(!(atomic_read(&next->membarrier_state) &
|
||
|
MEMBARRIER_STATE_PRIVATE_EXPEDITED) || !prev))
|
||
|
return;
|
||
|
|
||
|
/*
|
||
|
* The membarrier system call requires a full memory barrier
|
||
|
* after storing to rq->curr, before going back to user-space.
|
||
|
*/
|
||
|
smp_mb();
|
||
|
}
|
||
|
|
||
|
#endif /* _ASM_POWERPC_MEMBARRIER_H */
|