Bug#406754: Bug #406754: portaudio19: FTBFS: #error Memory barriers
are not defined on this system.
Mikael Magnusson
mikma at users.sourceforge.net
Mon Jan 29 11:32:47 CET 2007
Falk Hueffner wrote:
> Hi,
>
> the correct solution is to use __sync_synchronize as fallback, which
> is a full memory barrier defined by gcc (starting from 4.1) for all
> platforms. It is also desirable to use this on all platforms that
> don't differentiate read/write/full barriers, since it gives the
> compiler better opportunities to optimize.
>
Do you have a patch? I tried to use __sync_synchronize on i386, but it
doesn't generate any synchronization code in the assembler output.
Mikael
--- old-working/src/common/pa_ringbuffer.c 2007-01-29
11:27:55.000000000 +0100
+++ new-working/src/common/pa_ringbuffer.c 2007-01-29
11:27:55.000000000 +0100
@@ -86,9 +86,9 @@
# define PaUtil_ReadMemoryBarrier() asm volatile("sync":::"memory")
# define PaUtil_WriteMemoryBarrier() asm volatile("sync":::"memory")
# elif defined( __i386__ ) || defined( __i486__ ) || defined(
__i586__ ) || defined( __i686__ )
-# define PaUtil_FullMemoryBarrier() asm volatile("mfence":::"memory")
-# define PaUtil_ReadMemoryBarrier() asm volatile("lfence":::"memory")
-# define PaUtil_WriteMemoryBarrier() asm volatile("sfence":::"memory")
+# define PaUtil_FullMemoryBarrier() __sync_synchronize
+# define PaUtil_ReadMemoryBarrier() __sync_synchronize
+# define PaUtil_WriteMemoryBarrier() __sync_synchronize
# else
# ifdef ALLOW_SMP_DANGERS
# warning Memory barriers not defined on this system or system
unknown
More information about the Pkg-voip-maintainers
mailing list