On Mon, Oct 19, 2015 at 12:05:29PM +0100, Chris Wilson wrote:
In order to add the clobbers, I had to adjust the macro slightly:
+#define alternative_output(oldinstr, newinstr, feature, output) \
asm volatile (ALTERNATIVE(oldinstr, newinstr, feature) \
: output : "i" (0) : "memory")
and that also works. The concern I have here is that the asm does use "+m" as its output already, and the clflush() asm doesn't require the manual clobber.
Yeah, you could make the above
#define alternative_output(oldinstr, newinstr, feature, output, clobber...)
and use it to define clflushopt(). hpa might have a better idea, though...