|
@@ -428,8 +428,13 @@ prot_call:
|
428
|
428
|
* function will be passed back to the protected-mode caller. A
|
429
|
429
|
* result of this is that this routine cannot be called directly from
|
430
|
430
|
* C code, since it clobbers registers that the C ABI expects the
|
431
|
|
- * callee to preserve. Gate A20 will be re-enabled in case the
|
432
|
|
- * real-mode routine disabled it.
|
|
431
|
+ * callee to preserve. Gate A20 will *not* be automatically
|
|
432
|
+ * re-enabled. Since we always run from an even megabyte of memory,
|
|
433
|
+ * we are guaranteed to return successfully to the protected-mode
|
|
434
|
+ * code, which should then call gateA20_set() if it suspects that gate
|
|
435
|
+ * A20 may have been disabled. Note that enabling gate A20 is a
|
|
436
|
+ * potentially slow operation that may also cause keyboard input to be
|
|
437
|
+ * lost; this is why it is not done automatically.
|
433
|
438
|
*
|
434
|
439
|
* librm.h defines a convenient macro REAL_CODE() for using real_call.
|
435
|
440
|
* See librm.h and realmode.h for details and examples.
|
|
@@ -477,9 +482,6 @@ real_call:
|
477
|
482
|
.section ".text"
|
478
|
483
|
.code32
|
479
|
484
|
1:
|
480
|
|
- /* Set up environment expected by C code */
|
481
|
|
- call gateA20_set
|
482
|
|
-
|
483
|
485
|
/* Restore registers and return */
|
484
|
486
|
popal
|
485
|
487
|
ret
|