Re: [PATCH v2] x86/mm/kaslr: Use _ASM_MUL macro for multiplication

From: Greg Hackmann
Date: Wed Apr 26 2017 - 17:29:29 EST


On 04/26/2017 02:24 PM, hpa@xxxxxxxxx wrote:
This really feels like a "fix your compiler" issue.

We already use the other forms, what's so bad about adding mul too?
And if this lets us build under clang, all the better.

-Kees

It's not bad per se, but if this doesn't eventually gets fixed in clang we'll have no end of this crap.


AIUI the "problem" is that clang is spilling mix_const into memory rather than assigning it to a register. This is perfectly legal since mix_const has a constraint of "rm". But mul needs a suffix when the input is a memory location, since it can't infer the multiplication width from the input operand anymore.

You get the same error message with gcc if you force it to use a memory location, by narrowing the constraint from "rm" to "m".