mirror of
https://github.com/xcat2/xNBA.git
synced 2024-11-26 03:09:12 +00:00
[liba20] Preserve all non-segment registers when calling INT 15,2401
Some BIOSes are reported to corrupt %ebx when using INT 15,2401 (see http://opensolaris.org/jive/thread.jspa?messageID=377026). Guard against this by preserving all (non-segment) registers. Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
parent
4d8a009ccf
commit
c77aece36a
@ -96,8 +96,11 @@ test_a20_long:
|
||||
.section ".text16.early", "awx", @progbits
|
||||
.code16
|
||||
enable_a20_bios:
|
||||
/* Preserve registers */
|
||||
pushw %ax
|
||||
|
||||
/* Preserve registers. Be very paranoid, since some BIOSes
|
||||
* are reported to clobber %ebx
|
||||
*/
|
||||
pushal
|
||||
|
||||
/* Attempt INT 15,2401 */
|
||||
movw $0x2401, %ax
|
||||
@ -108,7 +111,7 @@ enable_a20_bios:
|
||||
call test_a20_short
|
||||
|
||||
99: /* Restore registers and return */
|
||||
popw %ax
|
||||
popal
|
||||
ret
|
||||
.size enable_a20_bios, . - enable_a20_bios
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user