dde_linux: add dma_wmb/rmb barriers for arm_v6

This commit is contained in:
Alexander Boettcher 2020-01-10 14:08:58 +01:00 committed by Christian Helmuth
parent d8e2c95597
commit 2256f5fb4b
1 changed files with 12 additions and 9 deletions

View File

@ -11,24 +11,27 @@
* version 2. * version 2.
*/ */
/******************* /*******************************************
** asm/barrier.h ** ** source/arch/arm/include/asm/barrier.h **
*******************/ *******************************************/
#define mb() asm volatile ("": : :"memory") #define dsb() asm volatile ("mcr p15, 0, %0, c7, c10, 4": : "r" (0) : "memory")
#define dmb() asm volatile ("mcr p15, 0, %0, c7, c10, 5": : "r" (0) : "memory")
#define mb() dsb()
#define rmb() mb() #define rmb() mb()
#define wmb() asm volatile ("": : :"memory") #define wmb() dsb()
#define dma_wmb() barrier() #define dma_wmb() dmb()
#define dma_rmb() barrier() #define dma_rmb() dmb()
/* /*
* This is the "safe" implementation as needed for a configuration * This is the "safe" implementation as needed for a configuration
* with SMP enabled. * with SMP enabled.
*/ */
#define smp_mb() asm volatile ("": : :"memory") #define smp_mb() dmb()
#define smp_rmb() smp_mb() #define smp_rmb() smp_mb()
#define smp_wmb() asm volatile ("": : :"memory") #define smp_wmb() dmb()
static inline void barrier() { asm volatile ("": : :"memory"); } static inline void barrier() { asm volatile ("": : :"memory"); }