diff -Naur openal-0.0.8-lunar/src/arch/i386/x86_floatmul.c openal-0.0.8/src/arch/i386/x86_floatmul.c
--- openal-0.0.8-lunar/src/arch/i386/x86_floatmul.c	2005-12-21 20:06:35.000000000 +0100
+++ openal-0.0.8/src/arch/i386/x86_floatmul.c	2007-12-09 12:31:35.000000000 +0100
@@ -27,13 +27,16 @@
 /* MMX routine needs 16 */
 #define SCALING_POWER  16
 #define SCALING_FACTOR (1 << SCALING_POWER)
+#define MIN_ENTER_SIMD_LEN 48
 
 void _alFloatMul(ALshort *bpt, ALfloat sa, ALuint len);
 
 void _alFloatMul(ALshort *bpt, ALfloat sa, ALuint len) {
 	ALint scaled_sa = sa * SCALING_FACTOR;
 	ALint iter;
-	
+
+	if (len < MIN_ENTER_SIMD_LEN)
+	        goto skip_simd;
 #ifdef __MMX__
 	if (_alHaveMMX()) {
 		union {
@@ -93,6 +96,7 @@
 		__builtin_ia32_emms();
 	}
 #endif /* __MMX__ */
+skip_simd:
 
 	while(len--) {
 		iter = *bpt;
