diff options
author | 2007-01-02 16:29:27 +0000 | |
---|---|---|
committer | 2007-01-02 16:29:27 +0000 | |
commit | 657ad1634f812eb9c2497c0f59dcd5b1007a9f83 (patch) | |
tree | 8638281414acf8727252045203ca6df3b093d8e7 | |
parent | some unedit command bits; still work in progress for local mode. (diff) | |
download | wireguard-openbsd-657ad1634f812eb9c2497c0f59dcd5b1007a9f83.tar.xz wireguard-openbsd-657ad1634f812eb9c2497c0f59dcd5b1007a9f83.zip |
Fix the keyboard problem seen on Intel Macs, where only the first
keypress is seen by boot.
It appears that on the Intel Mac, we have to issue the "check for
keystroke" BIOS call before the "get keystroke" call will get it
(unlike any other BIOS I have seen in over 20 years).
It would not have been possible to fix this problem without the
donation from Steven N. Fettig (steve (at) anywheretechnology.com);
many thanks.
Bump versions of boot, cdboot and pxeboot accordingly.
Testing kettenis@, otto@, and others; ok weingart@.
-rw-r--r-- | sys/arch/i386/stand/boot/conf.c | 4 | ||||
-rw-r--r-- | sys/arch/i386/stand/cdboot/conf.c | 4 | ||||
-rw-r--r-- | sys/arch/i386/stand/libsa/bioscons.c | 11 | ||||
-rw-r--r-- | sys/arch/i386/stand/pxeboot/conf.c | 4 |
4 files changed, 16 insertions, 7 deletions
diff --git a/sys/arch/i386/stand/boot/conf.c b/sys/arch/i386/stand/boot/conf.c index fb11d5ea805..eccab2b9c29 100644 --- a/sys/arch/i386/stand/boot/conf.c +++ b/sys/arch/i386/stand/boot/conf.c @@ -1,4 +1,4 @@ -/* $OpenBSD: conf.c,v 1.34 2006/10/12 15:49:58 krw Exp $ */ +/* $OpenBSD: conf.c,v 1.35 2007/01/02 16:29:27 tom Exp $ */ /* * Copyright (c) 1996 Michael Shalayeff @@ -43,7 +43,7 @@ #include <dev/cons.h> #include "debug.h" -const char version[] = "2.12"; +const char version[] = "2.13"; int debug = 1; diff --git a/sys/arch/i386/stand/cdboot/conf.c b/sys/arch/i386/stand/cdboot/conf.c index d48331cd85a..1e620e4bcb1 100644 --- a/sys/arch/i386/stand/cdboot/conf.c +++ b/sys/arch/i386/stand/cdboot/conf.c @@ -1,4 +1,4 @@ -/* $OpenBSD: conf.c,v 1.6 2006/10/12 15:49:58 krw Exp $ */ +/* $OpenBSD: conf.c,v 1.7 2007/01/02 16:29:27 tom Exp $ */ /* * Copyright (c) 2004 Tom Cosgrove @@ -43,7 +43,7 @@ #include <dev/cons.h> #include "debug.h" -const char version[] = "1.05"; +const char version[] = "1.06"; int debug = 1; #undef _TEST diff --git a/sys/arch/i386/stand/libsa/bioscons.c b/sys/arch/i386/stand/libsa/bioscons.c index ba423c41e6a..e565159fe75 100644 --- a/sys/arch/i386/stand/libsa/bioscons.c +++ b/sys/arch/i386/stand/libsa/bioscons.c @@ -1,4 +1,4 @@ -/* $OpenBSD: bioscons.c,v 1.27 2004/03/09 19:12:12 tom Exp $ */ +/* $OpenBSD: bioscons.c,v 1.28 2007/01/02 16:29:27 tom Exp $ */ /* * Copyright (c) 1997-1999 Michael Shalayeff @@ -80,6 +80,15 @@ pc_getc(dev_t dev) return (rv & 0xff); } + /* + * Wait for a character to actually become available. Appears to + * be necessary on (at least) the Intel Mac Mini. + */ + do { + __asm __volatile(DOINT(0x16) "; setnz %b0" : "=a" (rv) : + "0" (0x100) : "%ecx", "%edx", "cc" ); + } while ((rv & 0xff) == 0); + __asm __volatile(DOINT(0x16) : "=a" (rv) : "0" (0x000) : "%ecx", "%edx", "cc" ); diff --git a/sys/arch/i386/stand/pxeboot/conf.c b/sys/arch/i386/stand/pxeboot/conf.c index 8313e4135ac..56555796e21 100644 --- a/sys/arch/i386/stand/pxeboot/conf.c +++ b/sys/arch/i386/stand/pxeboot/conf.c @@ -1,4 +1,4 @@ -/* $OpenBSD: conf.c,v 1.10 2006/10/12 15:49:58 krw Exp $ */ +/* $OpenBSD: conf.c,v 1.11 2007/01/02 16:29:27 tom Exp $ */ /* * Copyright (c) 2004 Tom Cosgrove @@ -46,7 +46,7 @@ #include "pxeboot.h" #include "pxe_net.h" -const char version[] = "1.10"; +const char version[] = "1.11"; int debug = 1; #undef _TEST |