diff options
| -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); |
