diff -uF^[a-zA-Z_][a-z A-Z0-9_]*([^;]*$ sys/arch/x68k/dev/kbd.c.orig sys/arch/x68k/dev/kbd.c --- sys/arch/x68k/dev/kbd.c.orig Fri Dec 3 09:14:06 1999 +++ sys/arch/x68k/dev/kbd.c Sun May 21 15:47:41 2000 @@ -326,12 +326,18 @@ kbdpoll(dev, events, p) kbdintr(arg) void *arg; { - u_char c, in; + u_char c, st; struct kbd_softc *k = arg; /* XXX */ struct firm_event *fe; int put; - c = in = mfp_get_udr(); + /* clear receiver error if any */ + st = mfp_get_rsr(); + + c = mfp_get_udr(); + + if ((st & MFP_RSR_BF) == 0) + return 0; /* intr caused by an err -- no char received */ /* if not in event mode, deliver straight to ite to process key stroke */ if (! k->sc_event_mode) {