add needed store fence in list-bits management
This commit is contained in:
parent
342e95cf32
commit
65b69a91e5
|
@ -475,9 +475,10 @@ void S_list_bits_set(p, bits) ptr p; iptr bits; {
|
|||
|
||||
memset(list_bits, 0, segment_bitmap_bytes);
|
||||
|
||||
/* FIXME: A write fence is needed here to make sure `list_bits` is
|
||||
zeroed for everyone who sees it. On x86, TSO takes care of that
|
||||
/* A store fence is needed here to make sure `list_bits` is zeroed
|
||||
for everyone who sees it. On x86, TSO takes care of that
|
||||
ordering already. */
|
||||
STORE_FENCE();
|
||||
|
||||
/* beware: racy write here */
|
||||
si->list_bits = list_bits;
|
||||
|
|
|
@ -468,3 +468,13 @@ typedef char tputsputcchar;
|
|||
|
||||
/* Use "/dev/urandom" everywhere except Windows */
|
||||
#define USE_DEV_URANDOM_UUID
|
||||
|
||||
#if defined(__arm64__) || defined(__arm32__)
|
||||
# define STORE_FENCE() __asm__ __volatile__ ("dmb ishst" : : : "memory")
|
||||
#elif defined(__powerpc64__)
|
||||
# define STORE_FENCE() __asm__ __volatile__ ("lwsync" : : : "memory")
|
||||
#elif defined(__powerpc__) || defined(__POWERPC__)
|
||||
# define STORE_FENCE() __asm__ __volatile__ ("sync" : : : "memory")
|
||||
#else
|
||||
# define STORE_FENCE() /* empty */
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue
Block a user