mirror of
https://github.com/torvalds/linux.git
synced 2024-12-27 05:11:48 +00:00
43 lines
1.2 KiB
C
43 lines
1.2 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_mb__before_atomic_dec() barrier()
|
||
|
#define smp_mb__after_atomic_dec() barrier()
|
||
|
#define smp_mb__before_atomic_inc() barrier()
|
||
|
#define smp_mb__after_atomic_inc() barrier()
|
||
|
|
||
|
#define smp_read_barrier_depends() do { } while (0)
|
||
|
|
||
|
#endif
|
||
|
|
||
|
#endif
|