[project @ 2001-08-07 20:06:41 by ken]
authorken <unknown>
Tue, 7 Aug 2001 20:06:41 +0000 (20:06 +0000)
committerken <unknown>
Tue, 7 Aug 2001 20:06:41 +0000 (20:06 +0000)
commit9bab7a0eda6230f7844b9c10b259331229ca6985
tree013b4e4c74cf9aa9f1eaf5268cb9869d54fc4ada
parent1e402dba89c2ec3ce8b39827296c5b24c4e61173
[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
ghc/rts/StgCRun.c