diff options
author | Chris Robinson <[email protected]> | 2013-03-15 04:32:46 -0700 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2013-03-15 04:32:46 -0700 |
commit | eb1080910e8319fcba580139a3a7a2f3c5e7761c (patch) | |
tree | c2d74bb0ae16cd42dab775bb028b0974d8be45ee /Alc | |
parent | d237410d1d40d65664381d5dbbe3a66e3291d1fa (diff) |
Use force_align_arg_pointer for QSA
Diffstat (limited to 'Alc')
-rw-r--r-- | Alc/backends/qsa.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/Alc/backends/qsa.c b/Alc/backends/qsa.c index c659ce2f..933af5b4 100644 --- a/Alc/backends/qsa.c +++ b/Alc/backends/qsa.c @@ -175,6 +175,14 @@ static DevMap* deviceList(int type, ALuint* count) return dev_list; } +/* force_align_arg_pointer is required for proper function arguments */ +/* aligning, when SSE mixer is used. QNX has a bug in pthread_create */ +/* function regarding thread stack alignment, it uses 64 bit align */ +/* instead of 128 bit, like main thread. */ +#if defined(__GNUC__) && (_NTO_VERSION <= 650) && \ + defined(__i386__) && defined(HAVE_SSE) +__attribute__((force_align_arg_pointer)) +#endif /* __GNUC__ && QNX version < 6.5.0 on x86 platform with SSE support */ static ALuint qsa_proc_playback(ALvoid* ptr) { ALCdevice* device=(ALCdevice*)ptr; |