Lines Matching defs:io_apic

65 struct io_apic {
83 static inline uint32_t apic_io_read_reg(struct io_apic* io_apic, uint8_t reg) TA_REQ(lock);
84 static inline void apic_io_write_reg(struct io_apic* io_apic, uint8_t reg,
88 static uint64_t apic_io_read_redirection_entry(struct io_apic* io_apic,
90 static void apic_io_write_redirection_entry(struct io_apic* io_apic, uint32_t global_irq,
94 static struct io_apic* apic_io_resolve_global_irq(uint32_t irq);
96 static struct io_apic* apic_io_resolve_global_irq_no_panic(uint32_t irq);
99 static fbl::Array<io_apic> io_apics;
117 io_apics.reset(new (&ac) io_apic[num_io_apics], num_io_apics);
126 struct io_apic* apic = &io_apics[i];
179 static struct io_apic* apic_io_resolve_global_irq_no_panic(uint32_t irq) {
190 static struct io_apic* apic_io_resolve_global_irq(uint32_t irq) {
191 struct io_apic* res = apic_io_resolve_global_irq_no_panic(irq);
200 struct io_apic* io_apic,
202 ASSERT(io_apic != nullptr);
204 *IO_APIC_IND(io_apic->vaddr) = reg;
205 uint32_t val = *IO_APIC_DAT(io_apic->vaddr);
210 struct io_apic* io_apic,
213 ASSERT(io_apic != nullptr);
215 *IO_APIC_IND(io_apic->vaddr) = reg;
216 *IO_APIC_DAT(io_apic->vaddr) = val;
220 struct io_apic* io_apic,
224 ASSERT(global_irq >= io_apic->desc.global_irq_base);
225 uint32_t offset = global_irq - io_apic->desc.global_irq_base;
226 ASSERT(offset <= io_apic->max_redirection_entry);
230 result |= apic_io_read_reg(io_apic, reg_id);
231 result |= ((uint64_t)apic_io_read_reg(io_apic, (uint8_t)(reg_id + 1))) << 32;
236 struct io_apic* io_apic,
241 ASSERT(global_irq >= io_apic->desc.global_irq_base);
242 uint32_t offset = global_irq - io_apic->desc.global_irq_base;
243 ASSERT(offset <= io_apic->max_redirection_entry);
246 apic_io_write_reg(io_apic, reg_id, (uint32_t)value);
247 apic_io_write_reg(io_apic, (uint8_t)(reg_id + 1), (uint32_t)(value >> 32));
268 struct io_apic* io_apic = apic_io_resolve_global_irq(global_irq);
272 ASSERT(io_apic->version >= IO_APIC_EOIR_MIN_VERSION);
273 *IO_APIC_EOIR(io_apic->vaddr) = vec;
277 struct io_apic* io_apic = apic_io_resolve_global_irq(global_irq);
281 uint64_t reg = apic_io_read_redirection_entry(io_apic, global_irq);
290 apic_io_write_redirection_entry(io_apic, global_irq, reg);
302 struct io_apic* io_apic = apic_io_resolve_global_irq(global_irq);
323 apic_io_write_redirection_entry(io_apic, global_irq, reg);
330 struct io_apic* io_apic = apic_io_resolve_global_irq(global_irq);
332 if (!io_apic)
337 uint64_t reg = apic_io_read_redirection_entry(io_apic, global_irq);
349 struct io_apic* io_apic = apic_io_resolve_global_irq(global_irq);
353 uint64_t reg = apic_io_read_redirection_entry(io_apic, global_irq);
363 apic_io_write_redirection_entry(io_apic, global_irq, reg);
367 struct io_apic* io_apic = apic_io_resolve_global_irq(global_irq);
371 uint64_t reg = apic_io_read_redirection_entry(io_apic, global_irq);
428 struct io_apic* apic = &io_apics[i];
441 struct io_apic* apic = &io_apics[i];
452 struct io_apic* apic = &io_apics[i];