On 13/02/18 14:22, Jan Beulich wrote:
>>>> On 12.02.18 at 12:23, <andrew.coop...@citrix.com> wrote:
>> --- a/xen/include/asm-x86/alternative.h
>> +++ b/xen/include/asm-x86/alternative.h
>> @@ -65,11 +65,6 @@ extern void alternative_instructions(void);
>> ALTERNATIVE(oldinstr, newinstr1, feature1) \
>> ALTERNATIVE_N(newinstr2, feature2, 2)
>> -#define ALTERNATIVE_3(oldinstr, newinstr1, feature1, newinstr2, feature2, \
>> - newinstr3, feature3) \
>> - ALTERNATIVE_2(oldinstr, newinstr1, feature1, newinstr2, feature2) \
>> - ALTERNATIVE_N(newinstr3, feature3, 3)
>> * Alternative instructions for different CPU types or capabilities.
> While this one is fine, ...
>> @@ -118,26 +113,6 @@ extern void alternative_instructions(void);
>> newinstr2, feature2) \
>> : output : input)
>> - * This is similar to alternative_io. But it has three features and
>> - * respective instructions.
>> - *
>> - * If CPU has feature3, newinstr3 is used.
>> - * Otherwise, if CPU has feature2, newinstr2 is used.
>> - * Otherwise, if CPU has feature1, newinstr1 is used.
>> - * Otherwise, oldinstr is used.
>> - */
>> -#define alternative_io_3(oldinstr, newinstr1, feature1, newinstr2, \
>> - feature2, newinstr3, feature3, output, \
>> - input...) \
>> - asm volatile(ALTERNATIVE_3(oldinstr, newinstr1, feature1, \
>> - newinstr2, feature2, newinstr3, \
>> - feature3) \
>> - : output : input)
>> -/* Use this macro(s) if you need more than one output parameter. */
>> -#define ASM_OUTPUT2(a...) a
> ... I'm having patches to post which use both of these, so I'd
> very much prefer them to not go away. It is simply a lack of time
> which resulted in me not having posted that series already.
In which case I'll need to review that patch before commenting on this
one (i.e. whether it actually needs to be an alternative_3, or whether
there is a shorter way to do it).
The problem is that the gas_max() expression expands its parameters 5
times, and ISTR a report on LKML saying that older version of GAS
couldn't cope with the eventual expansion of the 3-replacement version.
Xen-devel mailing list