Re: [PATCH v3] arm64: sysreg: make mrs_s and msr_s macros work with Clang and LTO

2019-04-23 Thread Kees Cook
On Tue, Apr 23, 2019 at 4:00 PM Nick Desaulniers wrote: > > On Tue, Apr 23, 2019 at 3:57 PM Ard Biesheuvel > wrote: > > > > On Wed, 24 Apr 2019 at 00:55, Kees Cook wrote: > > > > > > On Mon, Apr 15, 2019 at 7:38 AM Kees Cook wrote: > > > > +#define __msr_s(r, v)

Re: [PATCH v3] arm64: sysreg: make mrs_s and msr_s macros work with Clang and LTO

2019-04-23 Thread Nick Desaulniers
On Tue, Apr 23, 2019 at 3:57 PM Ard Biesheuvel wrote: > > On Wed, 24 Apr 2019 at 00:55, Kees Cook wrote: > > > > On Mon, Apr 15, 2019 at 7:38 AM Kees Cook wrote: > > > +#define __msr_s(r, v) \ > > > + DEFINE_MSR_S

Re: [PATCH v3] arm64: sysreg: make mrs_s and msr_s macros work with Clang and LTO

2019-04-23 Thread Ard Biesheuvel
On Wed, 24 Apr 2019 at 00:55, Kees Cook wrote: > > On Mon, Apr 15, 2019 at 7:38 AM Kees Cook wrote: > > +#define __msr_s(r, v) \ > > + DEFINE_MSR_S\ > > +" msr_s " __stringify(r) ", %x0\n"

Re: [PATCH v3] arm64: sysreg: make mrs_s and msr_s macros work with Clang and LTO

2019-04-23 Thread Kees Cook
On Mon, Apr 15, 2019 at 7:38 AM Kees Cook wrote: > +#define __msr_s(r, v) \ > + DEFINE_MSR_S\ > +" msr_s " __stringify(r) ", %x0\n"\ > + UNDEFINE_MSR_S : : "rZ" (v) BTW

Re: [PATCH v3] arm64: sysreg: make mrs_s and msr_s macros work with Clang and LTO

2019-04-23 Thread Arnd Bergmann
On Tue, Apr 23, 2019 at 8:25 PM Kees Cook wrote: > On Tue, Apr 23, 2019 at 11:15 AM Nick Desaulniers > wrote: > > On Tue, Apr 23, 2019 at 7:12 AM Mark Rutland wrote: > > > > > > On Mon, Apr 22, 2019 at 10:44:10AM -0700, Nick Desaulniers wrote: > > > > On Tue, Apr 16, 2019 at 9:03 PM Kees Cook

Re: [PATCH v3] arm64: sysreg: make mrs_s and msr_s macros work with Clang and LTO

2019-04-23 Thread Kees Cook
On Tue, Apr 23, 2019 at 11:15 AM Nick Desaulniers wrote: > > On Tue, Apr 23, 2019 at 7:12 AM Mark Rutland wrote: > > > > On Mon, Apr 22, 2019 at 10:44:10AM -0700, Nick Desaulniers wrote: > > > On Tue, Apr 16, 2019 at 9:03 PM Kees Cook wrote: > > > > > > > > On Tue, Apr 16, 2019 at 12:08 PM Mark

Re: [PATCH v3] arm64: sysreg: make mrs_s and msr_s macros work with Clang and LTO

2019-04-23 Thread Nick Desaulniers
On Tue, Apr 23, 2019 at 7:12 AM Mark Rutland wrote: > > On Mon, Apr 22, 2019 at 10:44:10AM -0700, Nick Desaulniers wrote: > > On Tue, Apr 16, 2019 at 9:03 PM Kees Cook wrote: > > > > > > On Tue, Apr 16, 2019 at 12:08 PM Mark Rutland > > > wrote: > > > > > > > > On Mon, Apr 15, 2019 at

Re: [PATCH v3] arm64: sysreg: make mrs_s and msr_s macros work with Clang and LTO

2019-04-23 Thread Mark Rutland
On Mon, Apr 22, 2019 at 10:44:10AM -0700, Nick Desaulniers wrote: > On Tue, Apr 16, 2019 at 9:03 PM Kees Cook wrote: > > > > On Tue, Apr 16, 2019 at 12:08 PM Mark Rutland wrote: > > > > > > On Mon, Apr 15, 2019 at 10:22:27AM -0700, Nick Desaulniers wrote: > > > > On Mon, Apr 15, 2019 at 10:06 AM

Re: [PATCH v3] arm64: sysreg: make mrs_s and msr_s macros work with Clang and LTO

2019-04-22 Thread Nick Desaulniers
On Tue, Apr 16, 2019 at 9:03 PM Kees Cook wrote: > > On Tue, Apr 16, 2019 at 12:08 PM Mark Rutland wrote: > > > > On Mon, Apr 15, 2019 at 10:22:27AM -0700, Nick Desaulniers wrote: > > > On Mon, Apr 15, 2019 at 10:06 AM Mark Rutland > > > wrote: > > > > It would be nice if we could simply rely

Re: [PATCH v3] arm64: sysreg: make mrs_s and msr_s macros work with Clang and LTO

2019-04-16 Thread Kees Cook
On Tue, Apr 16, 2019 at 12:08 PM Mark Rutland wrote: > > On Mon, Apr 15, 2019 at 10:22:27AM -0700, Nick Desaulniers wrote: > > On Mon, Apr 15, 2019 at 10:06 AM Mark Rutland wrote: > > > It would be nice if we could simply rely on a more recent binutils these > > > days, which supports the

Re: [PATCH v3] arm64: sysreg: make mrs_s and msr_s macros work with Clang and LTO

2019-04-16 Thread Nick Desaulniers
On Tue, Apr 16, 2019 at 10:08 AM Mark Rutland wrote: > On Mon, Apr 15, 2019 at 10:22:27AM -0700, Nick Desaulniers wrote: > > Also, I look forward to this patch for use of Clang's integrated > > assembler (regardless of LTO). I remember getting frustrated trying > > to figure out how to resolve

Re: [PATCH v3] arm64: sysreg: make mrs_s and msr_s macros work with Clang and LTO

2019-04-16 Thread Mark Rutland
On Mon, Apr 15, 2019 at 10:22:27AM -0700, Nick Desaulniers wrote: > On Mon, Apr 15, 2019 at 10:06 AM Mark Rutland wrote: > > On Mon, Apr 15, 2019 at 07:38:21AM -0700, Kees Cook wrote: > > > diff --git a/arch/arm64/include/asm/irqflags.h > > > b/arch/arm64/include/asm/irqflags.h > > > index

Re: [PATCH v3] arm64: sysreg: make mrs_s and msr_s macros work with Clang and LTO

2019-04-16 Thread Mark Rutland
On Mon, Apr 15, 2019 at 10:22:27AM -0700, Nick Desaulniers wrote: > On Mon, Apr 15, 2019 at 10:06 AM Mark Rutland wrote: > > It would be nice if we could simply rely on a more recent binutils these > > days, which supports the generic S sysreg > > definition. That would mean we could get rid

Re: [PATCH v3] arm64: sysreg: make mrs_s and msr_s macros work with Clang and LTO

2019-04-15 Thread Nick Desaulniers
On Mon, Apr 15, 2019 at 10:06 AM Mark Rutland wrote: > > On Mon, Apr 15, 2019 at 07:38:21AM -0700, Kees Cook wrote: > > From: Alex Matveev > > > > Clang's integrated assembler does not allow assembly macros defined > > in one inline asm block using the .macro directive to be used across > >

Re: [PATCH v3] arm64: sysreg: make mrs_s and msr_s macros work with Clang and LTO

2019-04-15 Thread Mark Rutland
On Mon, Apr 15, 2019 at 07:38:21AM -0700, Kees Cook wrote: > From: Alex Matveev > > Clang's integrated assembler does not allow assembly macros defined > in one inline asm block using the .macro directive to be used across > separate asm blocks. LLVM developers consider this a feature and not a

[PATCH v3] arm64: sysreg: make mrs_s and msr_s macros work with Clang and LTO

2019-04-15 Thread Kees Cook
From: Alex Matveev Clang's integrated assembler does not allow assembly macros defined in one inline asm block using the .macro directive to be used across separate asm blocks. LLVM developers consider this a feature and not a bug, recommending code refactoring: