From mboxrd@z Thu Jan 1 00:00:00 1970 From: "David S. Miller" To: law@cygnus.com Cc: burley@gnu.ai.mit.edu, egcs@cygnus.com Subject: Re: Some Haifa scheduler bugs Date: Thu, 04 Sep 1997 11:33:00 -0000 Message-id: <199709041832.OAA10124@jenolan.rutgers.edu> References: <27136.873396735@hurl.cygnus.com> X-SW-Source: 1997-09/msg00152.html Date: Thu, 04 Sep 1997 12:12:15 -0600 From: Jeffrey A Law 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