Re: [tip:x86/mm] x86, mm: Redesign get_user with a __builtin_choose_exprhack

From: H. Peter Anvin
Date: Tue Feb 12 2013 - 18:52:58 EST

On 02/12/2013 03:49 PM, Linus Torvalds wrote:
> On Tue, Feb 12, 2013 at 3:19 PM, H. Peter Anvin <hpa@xxxxxxxxx> wrote:
>> Yes, but there doesn't seem to be any other way to do this. gcc won't
>> even allow "=cd" even if we know the variable is 64 bits, even though
>> "=A" is documented to be equivalent to "=da".
> No, "=da" means value "in edx _or_ %eax". Not the same as "A".

Actually, if you look at how gcc implements them, they are the same, and
if you are luckless enough to try to use a 32-bit value with an "A"
constraint you have it end up in either %eax or %edx.

However, they seem to have added some additional linting which prohibits
the compound form. I'm not sure it would have worked anyway since we
need the two-register bit to be conditional.

> But you're right, there's nothing similar for %ebx:%ecx. I thought
> there was. I was really sure we did something special for 64-bit adc
> etc.
>> Let me know what you think.
> I guess we don't have any choice. And the other cleanups certainly look good.

OK, will commit the comment. We can add the additional copy if we need it.


To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at