On Mon, Aug 30, 2010 at 2:41 PM, Petr Tesarik <ptesarik@xxxxxxx> wrote: > IIUC, the subsequent compare can use an undefined value (r20 is not modified > anywhere in this function, except by the ld4.c.nc, but that happens only on > an ALAT miss, right?). I don't see that in my kernel - but you raise a good point. The idea in this code is that invala makes sure that we don't have a matching ALAT entry on the first iteration of the loop, so we will do the load. Then we loop not actually doing the access until the ALAT tells us that the location may have changed, when we load again. But this assumes that the compiler didn't decide to re-use the register for something else in the loop. So things may be a bit fragile if some aggressive optimization happen after the routine is inlined. Does Hedi's test fail for you if you drop the fancy ALAT trick? I.e. just use "serve = *p;" in __ticket_spin_lock()? [& similar in __ticket_spin_unlock_wait() if you want - but I don't think that is ever used for siglock] -Tony -- To unsubscribe from this list: send the line "unsubscribe linux-ia64" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html