Always use __volatile__ when using the 'emms' instruction.
authorDavid Korth <gerbilsoft@gerbilsoft.com>
Sat, 5 Sep 2015 03:45:50 +0000 (23:45 -0400)
committerDavid Korth <gerbilsoft@gerbilsoft.com>
Sat, 5 Sep 2015 03:45:50 +0000 (23:45 -0400)
doc/TODO.txt
src/libcompat/byteswap_x86.c
src/libgens/sound/SoundMgr_write.cpp

index be53903..58f517d 100644 (file)
@@ -18,7 +18,6 @@ Infrastructure:
 - localtime_r():
   - Call tzset() before using this function. (manpage says it may be necessary)
 - Create and use 'typedef super' in all C++ classes.
-- x86 asm: Always use __asm__ __volatile__ for 'emms' instructions.
 - Remove automatic GPL printout from libgens startup.
   - Just print out libgens version information.
   - GPL can be printed using various options.
index b552f8c..819d95b 100644 (file)
@@ -116,7 +116,7 @@ void __byte_swap_16_array(uint16_t *ptr, unsigned int n)
                }
 
                // Reset the FPU state.
-               __asm__ ("emms");
+               __asm__ __volatile__ ("emms");
 
                // If the block isn't a multiple of 8 bytes,
                // the C implementation will handle the rest.
index 30236b3..c804d81 100644 (file)
@@ -233,7 +233,7 @@ void SoundMgrPrivate::writeStereo_MMX(int16_t *dest, int samples)
        }
 
        // Reset the FPU state.
-       __asm__ ("emms");
+       __asm__ __volatile__ ("emms");
 
        // If the buffer size isn't a multiple of 4 samples,
        // write the remaining samples normally.
@@ -286,7 +286,7 @@ void SoundMgrPrivate::writeMono_MMX(int16_t *dest, int samples)
        }
 
        // Reset the FPU state.
-       __asm__ ("emms");
+       __asm__ __volatile__ ("emms");
 
        // If the buffer size isn't a multiple of 4 samples,
        // write the remaining samples normally.