Preserve the whole of %esp across prot_call(). We have to split this
authorMichael Brown <mcb30@etherboot.org>
Sat, 6 May 2006 19:44:23 +0000 (19:44 +0000)
committerMichael Brown <mcb30@etherboot.org>
Sat, 6 May 2006 19:44:23 +0000 (19:44 +0000)
commitfdb983d47383254aebe91edb22b87f18baf0b399
tree09825a4f2cc6e1b92a22e8e45a3d69c334ef907b
parentf8e087767bb9fa82eac04b6819bb3cb78b2e8028
Preserve the whole of %esp across prot_call().  We have to split this
between the low half stored in the static variable rm_sp, and the high
half stored on the prot_call() stack, because:

  Just using the stack would screw up when a prot_call()ed routine
  executes a real_call(); it would have no way to find the current top of
  the RM stack.

  Extending rm_sp to rm_esp would not be safe, because the guarantee that
  rm_sp must return to the correct value by the time an external
  real-mode call returns applies only to %sp, not to %esp.
src/arch/i386/transitions/librm.S