diff options
| author | Ian Moffett <ian@osmora.org> | 2025-11-19 21:24:42 -0500 |
|---|---|---|
| committer | Ian Moffett <ian@osmora.org> | 2025-11-19 22:37:02 -0500 |
| commit | a7e738f1c7d7a0eb183bc25db2e1a573706bb565 (patch) | |
| tree | ab15082cf1fc84cde9d5e76e5ee669cae2f7d8b6 /sys | |
| parent | d6d40e9ecf2aff5b1e265d26f7651e8633eddabd (diff) | |
kern/amd64: lapic: Add EOI function
Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'sys')
| -rw-r--r-- | sys/arch/amd64/cpu/lapic.c | 7 | ||||
| -rw-r--r-- | sys/inc/arch/amd64/lapic.h | 5 |
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); |
