explain MXCSR shenanigans in libs/pbd/fpu.cc
authorPaul Davis <paul@linuxaudiosystems.com>
Mon, 26 Dec 2011 22:32:21 +0000 (22:32 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Mon, 26 Dec 2011 22:32:21 +0000 (22:32 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@11079 d708f5d6-7413-0410-9779-e7cbd77b26cf

libs/pbd/fpu.cc

index 1018414d9b72a3ab68c9c4b92608fa116833ef5a..7efc63715bf4eb72037c41d7f8a74867375b3e9d 100644 (file)
@@ -69,6 +69,16 @@ FPU::FPU ()
                
                char* fxbuf = 0;
                
+               /* DAZ wasn't available in the first version of SSE. Since
+                  setting a reserved bit in MXCSR causes a general protection
+                  fault, we need to be able to check the availability of this
+                  feature without causing problems. To do this, one needs to
+                  set up a 512-byte area of memory to save the SSE state to,
+                  using fxsave, and then one needs to inspect bytes 28 through
+                  31 for the MXCSR_MASK value. If bit 6 is set, DAZ is
+                  supported, otherwise, it isn't.
+               */
+               
 #ifdef NO_POSIX_MEMALIGN
                if ((fxbuf = (char *) malloc(512)) == 0)
 #else