 1de7da377b
			
		
	
	
	1de7da377b
	
	
	
		
			
			Move the barriers functions that depend on the atomic implementation into the atomic implementation. Reviewed-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Signed-off-by: Peter Zijlstra <peterz@infradead.org> Acked-by: Vineet Gupta <vgupta@synopsys.com> [for arch/arc bits] Cc: Peter Zijlstra <peterz@infradead.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Link: http://lkml.kernel.org/r/20131213150640.786183683@infradead.org Signed-off-by: Ingo Molnar <mingo@kernel.org>
		
			
				
	
	
		
			37 lines
		
	
	
	
		
			1 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
	
		
			1 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
 | |
|  *
 | |
|  * This program is free software; you can redistribute it and/or modify
 | |
|  * it under the terms of the GNU General Public License version 2 as
 | |
|  * published by the Free Software Foundation.
 | |
|  */
 | |
| 
 | |
| #ifndef __ASM_BARRIER_H
 | |
| #define __ASM_BARRIER_H
 | |
| 
 | |
| #ifndef __ASSEMBLY__
 | |
| 
 | |
| /* TODO-vineetg: Need to see what this does, don't we need sync anywhere */
 | |
| #define mb() __asm__ __volatile__ ("" : : : "memory")
 | |
| #define rmb() mb()
 | |
| #define wmb() mb()
 | |
| #define set_mb(var, value)  do { var = value; mb(); } while (0)
 | |
| #define set_wmb(var, value) do { var = value; wmb(); } while (0)
 | |
| #define read_barrier_depends()  mb()
 | |
| 
 | |
| /* TODO-vineetg verify the correctness of macros here */
 | |
| #ifdef CONFIG_SMP
 | |
| #define smp_mb()        mb()
 | |
| #define smp_rmb()       rmb()
 | |
| #define smp_wmb()       wmb()
 | |
| #else
 | |
| #define smp_mb()        barrier()
 | |
| #define smp_rmb()       barrier()
 | |
| #define smp_wmb()       barrier()
 | |
| #endif
 | |
| 
 | |
| #define smp_read_barrier_depends()      do { } while (0)
 | |
| 
 | |
| #endif
 | |
| 
 | |
| #endif
 |