Messages in this thread | | | Date | Thu, 24 May 2018 15:43:14 -0700 | Subject | Re: [clang] stack protector and f1f029c7bf | From | hpa@zytor ... |
| |
On May 24, 2018 3:31:05 PM PDT, Nick Desaulniers <ndesaulniers@google.com> wrote: >On Thu, May 24, 2018 at 3:05 PM H. Peter Anvin <hpa@zytor.com> wrote: >> COMPILER AR: "=rm" should NEVER generate worse code than "=r". That >is >> unequivocally a compiler bug. > >Filed: https://bugs.llvm.org/show_bug.cgi?id=37583 > >> >> You are claiming it doesn't buy us anything, but you are only >looking >at >> > the paravirt case which is kind of "special" (in the short bus kind >of >way), >> > >> > That's fair. Is another possible solution to have paravirt maybe >not >use >> > native_save_fl() then, but its own >non-static-inline-without-m-constraint >> > implementation? > >> KERNEL AR: change native_save_fl() to an extern inline with an >assembly >> out-of-line implementation, to satisfy the paravirt requirement that >no >> GPRs other than %rax are clobbered. > >i'm happy to add that, do you have a recommendation if it should go in >an >existing .S file or a new one (and if so where/what shall I call it?).
How about irqflags.c since that is what the .h file is called.
It should simply be:
push %rdi popf ret
pushf pop %rax ret
... but with all the regular assembly decorations, of course. -- Sent from my Android device with K-9 Mail. Please excuse my brevity.
| |