[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 3/7] x86/alt: Clean up the assembly used to generate alternatives
>>> On 23.02.18 at 17:24, <andrew.cooper3@xxxxxxxxxx> wrote: > On 23/02/18 15:12, Jan Beulich wrote: >>>>> On 23.02.18 at 15:03, <andrew.cooper3@xxxxxxxxxx> wrote: >>> On 13/02/18 14:37, Jan Beulich wrote: >>>> >>> On 12.02.18 at 12:23, <andrew.cooper3@xxxxxxxxxx> wrote: >>>>> --- a/xen/include/asm-x86/alternative-asm.h >>>>> +++ b/xen/include/asm-x86/alternative-asm.h >>>>> @@ -9,60 +9,67 @@ >>>>> * enough information for the alternatives patching code to patch an >>>>> * instruction. See apply_alternatives(). >>>>> */ >>>>> -.macro altinstruction_entry orig alt feature orig_len alt_len >>>>> +.macro altinstruction_entry orig repl feature orig_len repl_len >>>>> .long \orig - . >>>>> - .long \alt - . >>>>> + .long \repl - . >>>>> .word \feature >>>>> .byte \orig_len >>>>> - .byte \alt_len >>>>> + .byte \repl_len >>>>> .endm >>>>> >>>>> +#define orig_len (.L\@_orig_e - .L\@_orig_s) >>>>> +#define repl_len(nr) (.L\@_repl_e\()nr - .L\@_repl_s\()nr) >>>>> +#define decl_repl(insn, nr) .L\@_repl_s\()nr: insn; .L\@_repl_e\()nr: >>>> Wouldn't it work equally well but look slightly less odd if you used >>>> \(nr) instead of \()nr? >>> How would that work? \() is the token separator. >> When there's nothing inside the parentheses, this construct >> can be used as a token separator, but that's not its main >> purpose. Instead \(<text>) means to take <text> literally, >> without e.g. expanding macro arguments inside it. > > I've never come across it before, and I still can't find reference to it > in the as manual. > > As for why not to use it, Clang has no idea what \(nr) means, meaning > that it doesn't expand the construct in the way you describe. (Although > I see that GCC/AS do behave as you describe). Oh, if clang can't cope, then leave it as is. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |