diff options
author | Ian Moffett <ian@osmora.org> | 2024-04-28 23:28:54 -0400 |
---|---|---|
committer | Ian Moffett <ian@osmora.org> | 2024-04-28 23:28:54 -0400 |
commit | 6aaaa53128926b42f63d4ef4861a16082d1c93db (patch) | |
tree | 23991ea7331f0c4a414e4f97f01876c3f58cf476 | |
parent | c6212de99ef76f4833974c7bb2e044413dac8d3d (diff) |
kernel/amd64: ioapic: Add ioapic_set_vec()
Add helper to set vector in a redirection table entry
Signed-off-by: Ian Moffett <ian@osmora.org>
-rw-r--r-- | sys/arch/amd64/amd64/ioapic.c | 11 | ||||
-rw-r--r-- | sys/include/arch/amd64/ioapic.h | 1 |
2 files changed, 12 insertions, 0 deletions
diff --git a/sys/arch/amd64/amd64/ioapic.c b/sys/arch/amd64/amd64/ioapic.c index b4d5f51..ffc732d 100644 --- a/sys/arch/amd64/amd64/ioapic.c +++ b/sys/arch/amd64/amd64/ioapic.c @@ -168,6 +168,17 @@ ioapic_set_base(void *mmio_base) } void +ioapic_set_vec(uint8_t irq, uint8_t vector) +{ + union ioapic_redentry redentry; + uint8_t gsi = irq_to_gsi(irq); + + ioapic_read_redentry(&redentry, gsi); + redentry.vector = vector; + ioapic_write_redentry(&redentry, gsi); +} + +void ioapic_init(void) { size_t tmp; diff --git a/sys/include/arch/amd64/ioapic.h b/sys/include/arch/amd64/ioapic.h index 54051cd..890f375 100644 --- a/sys/include/arch/amd64/ioapic.h +++ b/sys/include/arch/amd64/ioapic.h @@ -37,6 +37,7 @@ void ioapic_irq_unmask(uint8_t irq); void ioapic_gsi_mask(uint8_t irq); void ioapic_gsi_unmask(uint8_t irq); void ioapic_set_base(void *mmio_base); +void ioapic_set_vec(uint8_t irq, uint8_t vector); void ioapic_init(void); #endif /* !_AMD64_IOAPIC_H_ */ |