24 lines
		
	
	
	
		
			531 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			24 lines
		
	
	
	
		
			531 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
|   | #ifndef __ASM_MCS_LOCK_H
 | ||
|  | #define __ASM_MCS_LOCK_H
 | ||
|  | 
 | ||
|  | #ifdef CONFIG_SMP
 | ||
|  | #include <asm/spinlock.h>
 | ||
|  | 
 | ||
|  | /* MCS spin-locking. */ | ||
|  | #define arch_mcs_spin_lock_contended(lock)				\
 | ||
|  | do {									\ | ||
|  | 	/* Ensure prior stores are observed before we enter wfe. */	\ | ||
|  | 	smp_mb();							\ | ||
|  | 	while (!(smp_load_acquire(lock)))				\ | ||
|  | 		wfe();							\ | ||
|  | } while (0)								\ | ||
|  | 
 | ||
|  | #define arch_mcs_spin_unlock_contended(lock)				\
 | ||
|  | do {									\ | ||
|  | 	smp_store_release(lock, 1);					\ | ||
|  | 	dsb_sev();							\ | ||
|  | } while (0) | ||
|  | 
 | ||
|  | #endif	/* CONFIG_SMP */
 | ||
|  | #endif	/* __ASM_MCS_LOCK_H */
 |