summaryrefslogtreecommitdiff
path: root/i386
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2023-10-01 04:57:40 +0000
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2023-10-01 10:44:04 +0200
commita670a4f8c649f31f0acf8d5e8fee5f5393227f34 (patch)
tree48f2f78cb24ec50f561da32a5248ddc64e2f35c1 /i386
parentdd8dc288f5f2395307a766130c37be2c473dfa18 (diff)
kd: Handle masking of keyboard interrupt in the driver
Message-Id: <20231001045731.95682-1-damien@zamaudio.com>
Diffstat (limited to 'i386')
-rw-r--r--i386/i386at/kd.h1
-rw-r--r--i386/i386at/kd_event.c7
-rw-r--r--i386/i386at/model_dep.c2
3 files changed, 8 insertions, 2 deletions
diff --git a/i386/i386at/kd.h b/i386/i386at/kd.h
index 3ee707b5..5bfabce2 100644
--- a/i386/i386at/kd.h
+++ b/i386/i386at/kd.h
@@ -546,6 +546,7 @@ WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#define K_PDN 0x1b,0x5b,0x55
#define K_INS 0x1b,0x5b,0x40
+#define KBD_IRQ 1
/*
* This array maps scancodes to Ascii characters (or character
diff --git a/i386/i386at/kd_event.c b/i386/i386at/kd_event.c
index 25a0ef35..d4809084 100644
--- a/i386/i386at/kd_event.c
+++ b/i386/i386at/kd_event.c
@@ -66,6 +66,11 @@ WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include <i386/pio.h>
#include <i386at/kd.h>
#include <i386at/kd_queue.h>
+#ifdef APIC
+# include <i386/apic.h>
+#else
+# include <i386/pic.h>
+#endif
#include "kd_event.h"
@@ -116,6 +121,7 @@ kbdopen(dev_t dev, int flags, io_req_t ior)
kdinit();
splx(o_pri);
kbdinit();
+ unmask_irq(KBD_IRQ);
return(0);
}
@@ -134,6 +140,7 @@ kbdclose(
{
spl_t s = SPLKD();
+ mask_irq(KBD_IRQ);
kb_mode = KB_ASCII;
kdq_reset(&kbd_queue);
splx(s);
diff --git a/i386/i386at/model_dep.c b/i386/i386at/model_dep.c
index 97acfdd6..d835999d 100644
--- a/i386/i386at/model_dep.c
+++ b/i386/i386at/model_dep.c
@@ -171,8 +171,6 @@ void machine_init(void)
#if defined(APIC)
#warning FIXME: Rather unmask them from their respective drivers
- /* kd */
- unmask_irq(1);
/* com0 */
unmask_irq(4);
/* com1 */