On Fri, 18 Apr 2008, Geert Uytterhoeven wrote: > On Thu, 17 Apr 2008, Peter Zijlstra wrote: > > +retry: > > + pte.pte_low = ptep->pte_low; > > + smp_rmb(); > > + pte.pte_high = ptep->pte_high; > > + smp_rmb(); > > + if (unlikely(pte.pte_low != ptep->pte_low)) > > + goto retry; > > What about using `do { ... } while (...)' instead? Partly because it's not a loop. It's an error and retry event, and it generally happens zero times (and sometimes once). I don't think it should even _look_ like a loop. So personally, I just tend to think that it's just more readable when it's written as being obviously not a regular loop. I'm not in the "gotos are harmful" camp. And partly because I tend to distrust loops for these thigns is that historically gcc sometimes did stupid things for loops (it assumed that loops were hot and tried to align them etc, and the same didn't happen for branch targets). Of course, these days I suspect gcc can't even tell the difference any more (it probably turns it into the same internal representation), but old habits die hard. Linus -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html