Some Haifa scheduler bugs
David S. Miller
davem@jenolan.rutgers.edu
Thu Sep 4 11:33:00 GMT 1997
Date: Thu, 04 Sep 1997 12:12:15 -0600
From: Jeffrey A Law <law@hurl.cygnus.com>
I'm less familiar with how this works under aix or with
ultrasparcs/solaris, but I assume they both do something relatively
reasonable.
On the UltraSparc normal load/store instructions still trap on bogus
pointers like they always have.
The compiler must emit a special load instruction (with an address
space specifier for the "no-fault" address space) when it wants a
speculative load. The chip will not fault on a NULL pointer if page 0
of the process has the "allow non-faulting load" attribute set, when
you use these special load instructions. Non-faulting stores do not
exist.
Naturally, this depends upon OS support, and I think Solaris does map
page 0 in this special way, or they check the load instruction which
was executed by the user once the fault handling call chain determines
that the access was in outer space.
I lack the support currently on sparc64-linux, but it will be added
should a native compiler out there begin to emit the instructions ;-)
Later,
David "Sparc" Miller
davem@caip.rutgers.edu
More information about the Gcc
mailing list