tech-net archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Revamping optimised in_cksum/in4_cksum/in6_cksum support
Joerg Sonnenberger wrote:
> On Sun, Jan 27, 2008 at 10:23:31PM +1100, Simon Burge wrote:
> > while (mlen >= 32) {
> > __builtin_prefetch(data + 32);
> >
> > On at least some MIPS and PowerPC implementations (and possibly others)
> > a prefetch on an address that isn't mapped can cause a bus error or
> > similar exception.
>
> __builtin_prefetch is not supposed to generate traps. If you can
> actually trigger that, it is a GCC bug.
At least MIPS and PowerPC will generate "pref" and "dcbt" instructions
respectively that point to potentially invalid addresses with the code
as it currently is.
I had a look at the gcc description of __builtin_prefetch() and I'm
curious as to how "Data prefetch does not generate faults if ADDR
is invalid" can be guaranteed if it just blindly issues the raw
cache/prefetch instructions with the addresses you pass it when those
instructions can fault on at least some CPUs of both the architectures
I've looked at so far...
Simon.
Home |
Main Index |
Thread Index |
Old Index