mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
846 B
27 lines
846 B
#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 | |
|
MEMBARRIER_STATE_GLOBAL_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 */
|
|
|