Messages in this thread | | | Date | Tue, 12 Feb 2013 15:52:52 -0800 | From | "H. Peter Anvin" <> | Subject | Re: [tip:x86/mm] x86, mm: Redesign get_user with a __builtin_choose_expr hack |
| |
On 02/12/2013 03:49 PM, Linus Torvalds wrote: > On Tue, Feb 12, 2013 at 3:19 PM, H. Peter Anvin <hpa@zytor.com> 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.
-hpa
| |