… | |
… | |
171 | #define ECB_MEMORY_FENCE __asm__ __volatile__ ("mfence" : : : "memory") |
171 | #define ECB_MEMORY_FENCE __asm__ __volatile__ ("mfence" : : : "memory") |
172 | #define ECB_MEMORY_FENCE_ACQUIRE __asm__ __volatile__ ("" : : : "memory") |
172 | #define ECB_MEMORY_FENCE_ACQUIRE __asm__ __volatile__ ("" : : : "memory") |
173 | #define ECB_MEMORY_FENCE_RELEASE __asm__ __volatile__ ("") |
173 | #define ECB_MEMORY_FENCE_RELEASE __asm__ __volatile__ ("") |
174 | #elif __powerpc__ || __ppc__ || __powerpc64__ || __ppc64__ |
174 | #elif __powerpc__ || __ppc__ || __powerpc64__ || __ppc64__ |
175 | #define ECB_MEMORY_FENCE __asm__ __volatile__ ("sync" : : : "memory") |
175 | #define ECB_MEMORY_FENCE __asm__ __volatile__ ("sync" : : : "memory") |
|
|
176 | #elif defined __ARM_ARCH_2__ \ |
|
|
177 | || defined __ARM_ARCH_3__ || defined __ARM_ARCH_3M__ \ |
|
|
178 | || defined __ARM_ARCH_4__ || defined __ARM_ARCH_4T__ \ |
|
|
179 | || defined __ARM_ARCH_5__ || defined __ARM_ARCH_5E__ \ |
|
|
180 | || defined __ARM_ARCH_5T__ || defined __ARM_ARCH_5TE__ \ |
|
|
181 | || defined __ARM_ARCH_5TEJ__ |
|
|
182 | /* should not need any, unless running old code on newer cpu - arm doesn't support that */ |
176 | #elif defined __ARM_ARCH_6__ || defined __ARM_ARCH_6J__ \ |
183 | #elif defined __ARM_ARCH_6__ || defined __ARM_ARCH_6J__ \ |
177 | || defined __ARM_ARCH_6K__ || defined __ARM_ARCH_6ZK__ |
184 | || defined __ARM_ARCH_6K__ || defined __ARM_ARCH_6ZK__ \ |
|
|
185 | || defined __ARM_ARCH_6T2__ |
178 | #define ECB_MEMORY_FENCE __asm__ __volatile__ ("mcr p15,0,%0,c7,c10,5" : : "r" (0) : "memory") |
186 | #define ECB_MEMORY_FENCE __asm__ __volatile__ ("mcr p15,0,%0,c7,c10,5" : : "r" (0) : "memory") |
179 | #elif defined __ARM_ARCH_7__ || defined __ARM_ARCH_7A__ \ |
187 | #elif defined __ARM_ARCH_7__ || defined __ARM_ARCH_7A__ \ |
180 | || defined __ARM_ARCH_7M__ || defined __ARM_ARCH_7R__ |
188 | || defined __ARM_ARCH_7R__ || defined __ARM_ARCH_7M__ |
181 | #define ECB_MEMORY_FENCE __asm__ __volatile__ ("dmb" : : : "memory") |
189 | #define ECB_MEMORY_FENCE __asm__ __volatile__ ("dmb" : : : "memory") |
182 | #elif __aarch64__ |
190 | #elif __aarch64__ |
183 | #define ECB_MEMORY_FENCE __asm__ __volatile__ ("dmb ish" : : : "memory") |
191 | #define ECB_MEMORY_FENCE __asm__ __volatile__ ("dmb ish" : : : "memory") |
184 | #elif (__sparc || __sparc__) && !(__sparc_v8__ || defined __sparcv8) |
192 | #elif (__sparc || __sparc__) && !(__sparc_v8__ || defined __sparcv8) |
185 | #define ECB_MEMORY_FENCE __asm__ __volatile__ ("membar #LoadStore | #LoadLoad | #StoreStore | #StoreLoad" : : : "memory") |
193 | #define ECB_MEMORY_FENCE __asm__ __volatile__ ("membar #LoadStore | #LoadLoad | #StoreStore | #StoreLoad" : : : "memory") |