2002-12-21 Yoshinori K. Okuji <okuji@enbug.org>

* stage2/asm.S (gateA20): First, try a BIOS call (INT 15H,
	AX=2400/2401). Use the keyboard controller, only if that failed.
This commit is contained in:
okuji 2002-12-21 00:34:33 +00:00
parent f8111d3b54
commit ee9202997b
2 changed files with 35 additions and 0 deletions

View file

@ -1,3 +1,8 @@
2002-12-21 Yoshinori K. Okuji <okuji@enbug.org>
* stage2/asm.S (gateA20): First, try a BIOS call (INT 15H,
AX=2400/2401). Use the keyboard controller, only if that failed.
2002-12-11 Yoshinori K. Okuji <okuji@enbug.org>
Add a workaround for buggy BIOSes which don't pass boot drive

View file

@ -1660,6 +1660,36 @@ ENTRY(set_vbe_mode)
*/
ENTRY(gateA20)
/* first, try a BIOS call */
pushl %ebp
movl 8(%esp), %edx
call EXT_C(prot_to_real)
.code16
movw $0x2400, %ax
testw %dx, %dx
jz 1f
incw %ax
1: stc
int $0x15
jnc 2f
/* set non-zero if failed */
movb $1, %ah
/* save the status */
2: movb %ah, %dl
DATA32 call EXT_C(real_to_prot)
.code32
popl %ebp
testb %dl, %dl
jnz 3f
ret
3: /* use keyboard controller */
pushl %eax
call gloop1