summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2025-11-19 21:24:42 -0500
committerIan Moffett <ian@osmora.org>2025-11-19 22:37:02 -0500
commita7e738f1c7d7a0eb183bc25db2e1a573706bb565 (patch)
treeab15082cf1fc84cde9d5e76e5ee669cae2f7d8b6
parentd6d40e9ecf2aff5b1e265d26f7651e8633eddabd (diff)
kern/amd64: lapic: Add EOI function
Signed-off-by: Ian Moffett <ian@osmora.org>
-rw-r--r--sys/arch/amd64/cpu/lapic.c7
-rw-r--r--sys/inc/arch/amd64/lapic.h5
2 files changed, 12 insertions, 0 deletions
diff --git a/sys/arch/amd64/cpu/lapic.c b/sys/arch/amd64/cpu/lapic.c
index 076ddd3..2ff8802 100644
--- a/sys/arch/amd64/cpu/lapic.c
+++ b/sys/arch/amd64/cpu/lapic.c
@@ -62,6 +62,7 @@
#define LAPIC_REG_TCCR 0x0390 /* Timer current counter register */
#define LAPIC_REG_TDCR 0x03E0 /* Timer divide configuration register */
#define LAPIC_REG_LVTTMR 0x0320 /* LVT timer entry */
+#define LAPIC_REG_EOI 0x00B0
#define LAPIC_REG_ICRLO 0x0300U /* Interrupt Command Low Register */
#define LAPIC_REG_ICRHI 0x0310U /* Interrupt Command High Register */
@@ -373,6 +374,12 @@ lapic_oneshot_usec(struct mcb *mcb, size_t usec)
}
void
+lapic_eoi(struct mcb *mcb)
+{
+ lapic_write(mcb, LAPIC_REG_EOI, 0);
+}
+
+void
lapic_init(void)
{
struct cpu_info *ci;
diff --git a/sys/inc/arch/amd64/lapic.h b/sys/inc/arch/amd64/lapic.h
index d22a560..bc72717 100644
--- a/sys/inc/arch/amd64/lapic.h
+++ b/sys/inc/arch/amd64/lapic.h
@@ -98,6 +98,11 @@ struct lapic_ipi {
void lapic_oneshot_usec(struct mcb *mcb, size_t usec);
/*
+ * Send an end-of-interrupt
+ */
+void lapic_eoi(struct mcb *mcb);
+
+/*
* Read the current local APIC id
*/
uint32_t lapic_read_id(struct mcb *mcb);