Messages in this thread | | | From | Nadav Amit <> | Subject | Re: [RFC 5/8] x86: refcount: prevent gcc distortions | Date | Wed, 16 May 2018 16:44:00 +0000 |
| |
Jan Beulich <JBeulich@suse.com> wrote:
>>>> On 15.05.18 at 16:11, <namit@vmware.com> wrote: >> --- a/arch/x86/include/asm/refcount.h >> +++ b/arch/x86/include/asm/refcount.h >> @@ -14,34 +14,43 @@ >> * central refcount exception. The fixup address for the exception points >> * back to the regular execution flow in .text. >> */ >> -#define _REFCOUNT_EXCEPTION \ >> - ".pushsection .text..refcount\n" \ >> - "111:\tlea %[counter], %%" _ASM_CX "\n" \ >> - "112:\t" ASM_UD2 "\n" \ >> - ASM_UNREACHABLE \ >> - ".popsection\n" \ >> - "113:\n" \ >> + >> +asm ("\n" >> + ".macro __REFCOUNT_EXCEPTION counter:vararg\n\t" >> + ".pushsection .text..refcount\n" >> + "111:\tlea \\counter, %" _ASM_CX "\n" >> + "112:\t" ASM_UD2 "\n\t" >> + ASM_UNREACHABLE >> + ".popsection\n\t" >> + "113:\n" >> _ASM_EXTABLE_REFCOUNT(112b, 113b) >> + ".endm"); > > A few comments on assembly code formatting - while gas at present is > relatively lax in this regard, I wouldn't exclude that there might be a > more strict mode in the future, and that such a mode might eventually > become the default. Furthermore these formatting aspects affect > readability of the assembly produced, should anyone ever find a need > to look at it (perhaps because of some breakage) - I certainly do every > once in a while. > > Labels should be placed without any indentation (but of course there > may be more than one on a line, in which case subsequent ones may > of course be arbitrarily indented). Instructions and directives, otoh, > should be placed with at least a single tab or space of indentation > (unless preceded by a label, in which case the extra white space still > helps readability).
Writing these patches, I looked at the generated assembly, and there did not appear to be a standard. IIRC, .pushsection directives were not always inlined. I will fix it according to your comments.
> I'm also not sure about the purpose of the leading plain newline here. > gcc annotates code resulting from inline assembly anyway iirc, so > proper visual separation should already be available.
Right. It was only to get the macro directive not tabulated, but as you said, it should be tabulated, so I will remove it.
> > If I was the maintainer of this code, I would also object to the > mis-alignment your file scope asm()-s have ("asm (" is 5 characters, > which doesn't equal a tab's width).
I tried many formats (including the one you propose), and eventually went with the one that made checkpatch not yell at me. I will revert to the one you propose, which makes most sense, and ignore checkpatch warnings.
Thanks, Nadav
| |