Messages in this thread | | | Date | Fri, 25 Apr 2008 13:18:35 -0700 | From | "H. Peter Anvin" <> | Subject | Re: [PATCH 1/1] x86: fix text_poke |
| |
Mathieu Desnoyers wrote: > > This epilogue should then be used on both branches of the condition, > like this : > > if (unlikely(imv_cond(var))) { > imv_cond_end(); > ... > } else { > imv_cond_end(); > ... > } > > Where imv_cond_end() would look like this : > > +/* > + * Puts a test and branch make sure the %al register and ZF are not live > + * anymore. > + * All asm statements clobbers the flags, but add "cc" clobber just to be sure. > + * Clobbers %al. > + */ > +#define imv_cond_end() \ > + do { \ > + asm (".section __imv_cond_end,\"a\",@progbits\n\t" \ > + _ASM_PTR "1f\n\t" \ > + ".previous\n\t" \ > + "1:\n\t" \ > + : : : "a", "cc"); \ > + } while (0) > + >
As far as this is concerned, all you accomplish here is that gcc, if it wants to re-use the %al value, will copy it into another register before doing your imv_conv_end().
-hpa
| |