Documented the fact that the prefix can prot_call(main) without
authorMichael Brown <mcb30@etherboot.org>
Thu, 25 May 2006 22:04:17 +0000 (22:04 +0000)
committerMichael Brown <mcb30@etherboot.org>
Thu, 25 May 2006 22:04:17 +0000 (22:04 +0000)
worrying about its stack being destroyed during the Etherboot run.

src/arch/i386/transitions/librm.S

index 5033a3a..7364f9f 100644 (file)
@@ -328,6 +328,15 @@ rm_ds:     .word 0
  * function explicitly overwrites values in ix86.  Interrupt status
  * and GDT will also be preserved.  Gate A20 will be enabled.
  *
+ * Note that prot_call() does not rely on the real-mode stack
+ * remaining intact in order to return, since everything relevant is
+ * copied to the protected-mode stack for the duration of the call.
+ * In particular, this means that a real-mode prefix can make a call
+ * to main() which will return correctly even if the prefix's stack
+ * gets vapourised during the Etherboot run.  (The prefix cannot rely
+ * on anything else on the stack being preserved, so should move any
+ * critical data to registers before calling main()).
+ *
  * Parameters:
  *   function : virtual address of protected-mode function to call
  *