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