pcm dmix plugin: fix MIX_AREAS_24 routine for i386 & x86_64 platforms
authorJaroslav Kysela <perex@perex.cz>
Tue, 16 Jun 2009 18:10:19 +0000 (20:10 +0200)
committerJaroslav Kysela <perex@perex.cz>
Tue, 16 Jun 2009 18:10:19 +0000 (20:10 +0200)
The code was copied from ALSA bug#4577 from CannibalZerg.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>

src/pcm/pcm_dmix_i386.h
src/pcm/pcm_dmix_x86_64.h

index 9ea155d..462371a 100644 (file)
@@ -400,8 +400,8 @@ static void MIX_AREAS_24(unsigned int size,
                "\tmovzwl (%%esi), %%ecx\n"
                "\tmovl (%%ebx), %%edx\n"
                "\tsall $16, %%eax\n"
+               "\torl %%eax, %%ecx\n"
                "\t" LOCK_PREFIX "btsw $0, (%%edi)\n"
-               "\tleal (%%ecx,%%eax,1), %%ecx\n"
                "\tjc 2f\n"
                "\t" XSUB " %%edx, %%ecx\n"
                "2:"
index b4d0a41..ab40f50 100644 (file)
@@ -284,11 +284,11 @@ static void MIX_AREAS_24(unsigned int size,
                 *   *sum += sample;
                 */
                "\tmovsbl 2(%%rsi), %%eax\n"
-               "\tmovswl (%%rsi), %%ecx\n"
+               "\tmovzwl (%%rsi), %%ecx\n"
                "\tmovl (%%rbx), %%edx\n"
                "\tsall $16, %%eax\n"
+               "\torl %%eax, %%ecx\n"
                "\t" LOCK_PREFIX "btsw $0, (%%rdi)\n"
-               "\t.byte 0x67, 0x8d, 0x0c, 0x01\n"
                "\tjc 2f\n"
                "\t" XSUB " %%edx, %%ecx\n"
                "2:"