On 11.01.2018 15:02, Paolo Bonzini wrote: > On 11/01/2018 13:07, David Hildenbrand wrote: >>>> >>>> +static inline void lctlg(int cr, uint64_t value) >>>> +{ >>>> + asm volatile( >>>> + " lctlg %1,%1,%0\n" >>>> + : : "Q" (value), "i" (cr)); >>> Doesn't the compiler complain here? I though that "i" is only possible >>> with constants? I guess the compiler is smart enough to replace it with >>> the right constants, since this is an inline function. But maybe better >>> play safe and turn this into a macro instead. >> This works as it gets inlined. asm macros is frowned upon, no? >> > > Then please use always_inline. FYI, we already do the same in lib/s390x/asm/cpacf.h "opcode" without always_inline and that is copied from the kernel sources. Thanks > > Paolo > -- Thanks, David / dhildenb