Index: pxeldr.S =================================================================== RCS file: /usr/cvs/src/sys/boot/i386/pxeldr/pxeldr.S,v retrieving revision 1.13 diff -u -r1.13 pxeldr.S --- pxeldr.S 14 May 2004 20:29:30 -0000 1.13 +++ pxeldr.S 11 Apr 2006 17:41:56 -0000 @@ -227,10 +227,17 @@ jmp putstr # keep looping /* - * Enable A20 + * Enable A20. Put an upper limit on the amount of time we wait for the + * keyboard controller to get ready (65K x ISA access time). If + * we wait more than that amount, the hardware is probably + * legacy-free and simply doesn't have a keyboard controller. + * Thus, the A20 line is already enabled. */ seta20: cli # Disable interrupts -seta20.1: inb $0x64,%al # Get status + xor %cx,%cx # Clear +seta20.1: inc %cx # Increment, overflow? + jz seta20.3 # Yes + inb $0x64,%al # Get status testb $0x2,%al # Busy? jnz seta20.1 # Yes movb $0xd1,%al # Command: Write @@ -240,7 +247,7 @@ jnz seta20.2 # Yes movb $0xdf,%al # Enable outb %al,$0x60 # A20 - sti # Enable interrupts +seta20.3: sti # Enable interrupts retw # To caller /*