RE: [PATCH v5] x86: use builtins to read eflags

From: David Laight
Date: Fri Mar 18 2022 - 18:43:21 EST


From: Linus Torvalds
> Sent: 18 March 2022 18:19
>
> On Fri, Mar 18, 2022 at 10:59 AM Andy Lutomirski <luto@xxxxxxxxxx> wrote:
> >
> > I generally agree. In this particular case, though, I will keep using
> > the builtin in tools/testing/selftests/x86/helpers.h unless we actually
> > hit breakage. This is because this is *user* code, it is compiled with
> > the redzone enabled, and the asm code to do the right thing when the
> > redzone is enabled is too hairy for me to want to deal with it.
>
> Yeah, redzoning is a problem for "pushf".
>
> Or rather, it's not the redzoning itself, but the fact that the
> compiler might use the word under the stack for random other things,
> and the pushf will then corrupt some local variable storage.
>
> I think it would be lovely to solve that in inline asm itself some way
> - by marking the stack pointer clobbered or something.

Something that generates:
mov %rax,-8(%rsp)
pushf
xchg %rax,0(%rsp)
add %rsp,8
should work with or without a redzone.
Will be a bit slower :-(

David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)