Messages in this thread | | | Date | Thu, 11 Sep 2003 19:05:16 +0200 | From | Andi Kleen <> | Subject | Re: [PATCH] 2.6 workaround for Athlon/Opteron prefetch errata |
| |
On Thu, 11 Sep 2003 17:58:45 +0100 Jamie Lokier <jamie@shareable.org> wrote:
> Andi Kleen wrote: > > +static int is_prefetch(struct pt_regs *regs, unsigned long addr) > > Do I understand that certain values of "addr" can't be due to the > erratum? > > In which case, could you skip most of the is_prefetch() instruction > decoder with a test like this?: > > if ((addr & 3) == 0) > return 0;
Maybe. But gcc generates quite good code (binary decision tree) code for the switch() statement already so I don't think it is worth it to go through complications just to avoid that.
The decoder looks big in C, but when you take a look at its hot path in assembly it is quite fast.
-Andi - 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/
| |