Some embedded platforms have no keyboard controller. Give up waiting
for it to react after a timeout.
This commit is contained in:
parent
28dbdb7978
commit
36aa5c56d2
@ -197,13 +197,16 @@ main.5: mov %dx,MEM_ARG # Save args
|
|||||||
xorb %al,%al # Zero assumed bss from
|
xorb %al,%al # Zero assumed bss from
|
||||||
rep # the end of boot2.bin
|
rep # the end of boot2.bin
|
||||||
stosb # up to 0x10000
|
stosb # up to 0x10000
|
||||||
callw seta20 # Enable A20
|
|
||||||
jmp start+MEM_JMP-MEM_ORG # Start BTX
|
|
||||||
/*
|
/*
|
||||||
* Enable A20 so we can access memory above 1 meg.
|
* Enable A20 so we can access memory above 1 meg.
|
||||||
|
* Use the zero-valued %cx as a timeout for embedded hardware which do not
|
||||||
|
* have a keyboard controller.
|
||||||
*/
|
*/
|
||||||
seta20: cli # Disable interrupts
|
seta20: cli # Disable interrupts
|
||||||
seta20.1: inb $0x64,%al # Get status
|
seta20.1: dec %cx # Timeout?
|
||||||
|
jz seta20.3 # Yes
|
||||||
|
inb $0x64,%al # Get status
|
||||||
testb $0x2,%al # Busy?
|
testb $0x2,%al # Busy?
|
||||||
jnz seta20.1 # Yes
|
jnz seta20.1 # Yes
|
||||||
movb $0xd1,%al # Command: Write
|
movb $0xd1,%al # Command: Write
|
||||||
@ -213,8 +216,12 @@ seta20.2: inb $0x64,%al # Get status
|
|||||||
jnz seta20.2 # Yes
|
jnz seta20.2 # Yes
|
||||||
movb $0xdf,%al # Enable
|
movb $0xdf,%al # Enable
|
||||||
outb %al,$0x60 # A20
|
outb %al,$0x60 # A20
|
||||||
|
seta20.3:
|
||||||
sti # Enable interrupts
|
sti # Enable interrupts
|
||||||
retw # To caller
|
|
||||||
|
jmp start+MEM_JMP-MEM_ORG # Start BTX
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Trampoline used to call read from within boot1.
|
* Trampoline used to call read from within boot1.
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user