mirror of
https://github.com/xcat2/xNBA.git
synced 2024-12-14 15:21:32 +00:00
Don't automatically call gateA20_set() when returning from a real-mode
call.
This commit is contained in:
parent
0c03bb5a9a
commit
290c5ee779
@ -428,8 +428,13 @@ prot_call:
|
||||
* function will be passed back to the protected-mode caller. A
|
||||
* result of this is that this routine cannot be called directly from
|
||||
* C code, since it clobbers registers that the C ABI expects the
|
||||
* callee to preserve. Gate A20 will be re-enabled in case the
|
||||
* real-mode routine disabled it.
|
||||
* callee to preserve. Gate A20 will *not* be automatically
|
||||
* re-enabled. Since we always run from an even megabyte of memory,
|
||||
* we are guaranteed to return successfully to the protected-mode
|
||||
* code, which should then call gateA20_set() if it suspects that gate
|
||||
* A20 may have been disabled. Note that enabling gate A20 is a
|
||||
* potentially slow operation that may also cause keyboard input to be
|
||||
* lost; this is why it is not done automatically.
|
||||
*
|
||||
* librm.h defines a convenient macro REAL_CODE() for using real_call.
|
||||
* See librm.h and realmode.h for details and examples.
|
||||
@ -477,9 +482,6 @@ real_call:
|
||||
.section ".text"
|
||||
.code32
|
||||
1:
|
||||
/* Set up environment expected by C code */
|
||||
call gateA20_set
|
||||
|
||||
/* Restore registers and return */
|
||||
popal
|
||||
ret
|
||||
|
Loading…
Reference in New Issue
Block a user