On Mar 28, 2015 6:17 AM, "Denys Vlasenko" <vda.li...@googlemail.com> wrote: > > On Sat, Mar 28, 2015 at 10:46 AM, Ingo Molnar <mi...@kernel.org> wrote: > > * Denys Vlasenko <vda.li...@googlemail.com> wrote: > >> This is a C function. [...] > > > > Arguably that's a self-inflicted wound of uclibc: nothing keeps it > > from taking advantage of the syscall ABI and avoiding the double > > save/restores. > > It's not uclibc who calls write(), it's user program. > > IIRC uclibc can't make user program aware that write() > is not clobbering registers. > > Even if it could do that via an __attribute__ somehow, > it would be a violation of standards: write() is supposed to be > an ordinary C function, users must be able to take its address > and assign it to a pointer declared as > > ssize_t (*ptr)(int, const void *, size_t); > > Slapping __attribute__((different_abi)) > onto write() makes that impossible, the signature > no longer matches. > > Let me go back from hypothetics to the actual situation. > We can't do such a drastic ABI change now, it's too big. > > But is looks like we can relax ABI wrt saving flags, > because it's broken for some time, and no one complains. > > If we say that arith flags and DF are not saved, it may > mean that we don't need to kill ourselves with > awkward and costly (popf is 20 cycles) EFLAGS > manipulations.
Given that I just posted a patch that removes the popf by using sysret, I'm unconvinced this is worthwhile. --Andy -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/