Messages in this thread | | | Date | Mon, 18 Sep 2006 12:12:51 -0400 | From | Benjamin LaHaise <> | Subject | Re: Sysenter crash with Nested Task Bit set |
| |
On Mon, Sep 18, 2006 at 05:29:23PM +0200, Andi Kleen wrote: > > - asm volatile("pushl %%ebp\n\t" \ > > + asm volatile("pushfl\n\t" /* Save flags */ \ > > + "pushl %%ebp\n\t" \ > > We used to do that pushfl/popfl some time ago, but Ben removed it because > it was slow on P4. Ok, nobody thought of that case back then.
It's the pushfl that will be slow on any OoO CPU, as it has dependancies on any previous instructions that modified the flags, which ends up bringing all of the memory ordering dependancies into play. Doing a popfl to set the flags to some known value is much less expensive.
-ben -- "Time is of no importance, Mr. President, only life is important." Don't Email: <dont@kvack.org>. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |