diff options
author | rnordier <rnordier@FreeBSD.org> | 1998-10-27 20:19:24 +0000 |
---|---|---|
committer | rnordier <rnordier@FreeBSD.org> | 1998-10-27 20:19:24 +0000 |
commit | 25598ad6e0d817e2c59245243b16516d1369b924 (patch) | |
tree | e78e8f7dba641f782c74aab9856a2ac718034583 /sys/boot/i386 | |
parent | b845950ce73ad092e7f34a40eff470655b7f7d20 (diff) | |
download | FreeBSD-src-25598ad6e0d817e2c59245243b16516d1369b924.zip FreeBSD-src-25598ad6e0d817e2c59245243b16516d1369b924.tar.gz |
Avoid interruptions while talking to keyboard controller.
Diffstat (limited to 'sys/boot/i386')
-rw-r--r-- | sys/boot/i386/boot2/boot1.S | 12 | ||||
-rw-r--r-- | sys/boot/i386/boot2/boot1.s | 12 |
2 files changed, 14 insertions, 10 deletions
diff --git a/sys/boot/i386/boot2/boot1.S b/sys/boot/i386/boot2/boot1.S index 8b408ce..a919d2e 100644 --- a/sys/boot/i386/boot2/boot1.S +++ b/sys/boot/i386/boot2/boot1.S @@ -13,7 +13,7 @@ # purpose. # -# $Id: boot1.s,v 1.1.1.1 1998/10/12 21:16:26 rnordier Exp $ +# $Id: boot1.s,v 1.2 1998/10/13 21:35:42 rnordier Exp $ .set MEM_REL,0x600 # Relocation address .set MEM_ARG,0x800 # Arguments @@ -109,16 +109,18 @@ main.5: movwrm(_dx,MEM_ARG) # Save args # Enable A20 -seta20: inb $0x64,%al # Get status +seta20: cli # Disable interrupts +seta20.1: inb $0x64,%al # Get status testb $0x2,%al # Busy? - jnz seta20 # Yes + jnz seta20.1 # Yes movb $0xd1,%al # Command: Write outb %al,$0x64 # output port -seta20.1: inb $0x64,%al # Get status +seta20.2: inb $0x64,%al # Get status testb $0x2,%al # Busy? - jnz seta20.1 # Yes + jnz seta20.2 # Yes movb $0xdf,%al # Enable outb %al,$0x60 # A20 + sti # Enable interrupts ret # To caller # Read from disk diff --git a/sys/boot/i386/boot2/boot1.s b/sys/boot/i386/boot2/boot1.s index 8b408ce..a919d2e 100644 --- a/sys/boot/i386/boot2/boot1.s +++ b/sys/boot/i386/boot2/boot1.s @@ -13,7 +13,7 @@ # purpose. # -# $Id: boot1.s,v 1.1.1.1 1998/10/12 21:16:26 rnordier Exp $ +# $Id: boot1.s,v 1.2 1998/10/13 21:35:42 rnordier Exp $ .set MEM_REL,0x600 # Relocation address .set MEM_ARG,0x800 # Arguments @@ -109,16 +109,18 @@ main.5: movwrm(_dx,MEM_ARG) # Save args # Enable A20 -seta20: inb $0x64,%al # Get status +seta20: cli # Disable interrupts +seta20.1: inb $0x64,%al # Get status testb $0x2,%al # Busy? - jnz seta20 # Yes + jnz seta20.1 # Yes movb $0xd1,%al # Command: Write outb %al,$0x64 # output port -seta20.1: inb $0x64,%al # Get status +seta20.2: inb $0x64,%al # Get status testb $0x2,%al # Busy? - jnz seta20.1 # Yes + jnz seta20.2 # Yes movb $0xdf,%al # Enable outb %al,$0x60 # A20 + sti # Enable interrupts ret # To caller # Read from disk |