Skip to content

Commit 44e8d8c

Browse files
Fix: compiler barrier for msvc, hopefully works
1 parent 292cc08 commit 44e8d8c

1 file changed

Lines changed: 10 additions & 0 deletions

File tree

Inc/MockedDrivers/compiler_specific.hpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,15 @@ static inline uint32_t __RBIT(uint32_t val) {
3131
}
3232

3333
#define __CLZ __builtin_clz
34+
35+
#if defined(_MSC_VER) && (_MSC_VER > 1200) && !defined(__clang__)
36+
void _ReadWriteBarrier(void);
37+
#pragma intrinsic(_ReadWriteBarrier)
38+
#define __COMPILER_BARRIER() _ReadWriteBarrier()
39+
#define __DSB() __COMPILER_BARRIER()
40+
#define __ISB() __COMPILER_BARRIER()
41+
#else
42+
3443
#define __COMPILER_BARRIER() asm volatile("" ::: "memory")
3544

3645
// Architecture-specific definitions for barrier intrinsics used in mocks
@@ -52,4 +61,5 @@ static inline uint32_t __RBIT(uint32_t val) {
5261
# define __DSB() __COMPILER_BARRIER()
5362
# define __ISB() __COMPILER_BARRIER()
5463

64+
#endif
5565
#endif

0 commit comments

Comments
 (0)