#ifndef __FENNIX_KERNEL_CPU_MEMBAR_H__ #define __FENNIX_KERNEL_CPU_MEMBAR_H__ #include namespace CPU { namespace MemBar { SafeFunction static inline void Barrier() { #if defined(a64) || defined(a32) asmv("" :: : "memory"); #elif defined(aa64) asmv("dmb ish" :: : "memory"); #endif } SafeFunction static inline void Fence() { #if defined(a64) || defined(a32) asmv("mfence" :: : "memory"); #elif defined(aa64) asmv("dmb ish" :: : "memory"); #endif } SafeFunction static inline void StoreFence() { #if defined(a64) || defined(a32) asmv("sfence" :: : "memory"); #elif defined(aa64) asmv("dmb ishst" :: : "memory"); #endif } SafeFunction static inline void LoadFence() { #if defined(a64) || defined(a32) asmv("lfence" :: : "memory"); #elif defined(aa64) asmv("dmb ishld" :: : "memory"); #endif } } } #endif // !__FENNIX_KERNEL_CPU_MEMBAR_H__