[pulseaudio-discuss] [PATCH] Re: Why is it still hissing?
david.henningsson at canonical.com
Fri May 27 00:44:32 PDT 2011
On 2011-05-25 14:41, Andrew Lutomirski wrote:
> On Tue, May 24, 2011 at 10:04 AM, David Henningsson
> <david.henningsson at canonical.com> wrote:
>> Ok, so there is still a high-pitched noise with 5.1, although I tried to fix
>> that a while ago. I now know what the error is, but perhaps somewhat with
>> more GCC-ASM skills can help me fix it.
>> I spent parts of yesterday and today analysing it and came up with the
>> following conclusion:
>> Here's the asm code as written in svolume_sse.c, function
>> #define MOD_ADD(a,b) \
>> " add "#a", %3 \n\t" /* channel += inc */ \
>> " mov %3, %4 \n\t" \
>> " sub "#b", %4 \n\t" /* tmp = channel - channels */ \
>> " cmovae %4, %3 \n\t" /* if (tmp>= 0) channel = tmp */
>> And called with: MOD_ADD($8, %5)
>> Here's what it shows up with gdb (on i386) :
>> 0x00f3fbe6<+550>: add $0x8,%edi
>> 0x00f3fbe9<+553>: mov %edi,%ecx
>> 0x00f3fbeb<+555>: sub %edi,%ecx
>> 0x00f3fbed<+557>: cmovae %ecx,%edi
>> The error: both %3 and %5 is turned into the %edi register.
>> Here's the register allocation:
>> : "+r" (samples), "+r" (volumes), "+r" (length), "=D" (channel), "=&r"
>> : "rm" ((pa_reg_x86)channels)
>> : "cc"
>> As I can tell from the above the "=D" forces %3 to go into %edi, but I don't
>> know how to tell GCC not to use %edi for %5 (channels) as well, does anybody
>> know? Can this be a GCC bug?
> Either use "+D" for channel or "&rm" for channels.
> The manual here:
> is pretty good.
Thanks! Maybe I've found it if I had googled it better. Unfortunately
that didn't work, but after several attempts I came up with something
that seems to work here. The problem seems to be with the "rm" thing
Colin (or someone else), if you have time, would you give this a test
spin and apply if it works for you?
David Henningsson, Canonical Ltd.
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 2713 bytes
Desc: not available
More information about the pulseaudio-discuss