[project @ 2001-08-07 20:06:41 by ken]
Fixed (I hope, and have reason to believe) mysterious segfaulting problem
on the Alpha.
The problem (I hope, and have reason to believe) was that, during a few
instructions, the register saving/restoring code in StgRun() places data
below the current SP value. (I.e., it should first reserve stack space,
then put data in said space, rather than first put data in, then reserve
the space.)
"The SP value might be used by the hardware when raising exceptions and
asynchronous interrupts. It must be assumed that the contents of the stack
below the current SP value and within the stack for the current thread are
continually and unpredictably modified, as specified in the _Alpha
Architecture Reference Manual_, and as a result of asynchronous software
actions."
-- Compaq Computer Corporation, Houston. Tru64 UNIX Calling Standard for
Alpha Systems, 5.1 edition, August 2000, section 3.2.1. http://www.
tru64unix.compaq.com/docs/base_doc/DOCUMENTATION/V51_PDF/ARH9MBTE.PDF