1 #ifndef CFLAT_APIC_H 2 #define CFLAT_APIC_H 3 4 #include <stdint.h> 5 #include "apic-defs.h" 6 7 typedef struct { 8 uint8_t vector; 9 uint8_t delivery_mode:3; 10 uint8_t dest_mode:1; 11 uint8_t delivery_status:1; 12 uint8_t polarity:1; 13 uint8_t remote_irr:1; 14 uint8_t trig_mode:1; 15 uint8_t mask:1; 16 uint8_t reserve:7; 17 uint8_t reserved[4]; 18 uint8_t dest_id; 19 } ioapic_redir_entry_t; 20 21 void mask_pic_interrupts(void); 22 23 void eoi(void); 24 25 void ioapic_write_redir(unsigned line, ioapic_redir_entry_t e); 26 void ioapic_write_reg(unsigned reg, uint32_t value); 27 ioapic_redir_entry_t ioapic_read_redir(unsigned line); 28 uint32_t ioapic_read_reg(unsigned reg); 29 30 void set_mask(unsigned line, int mask); 31 32 void enable_apic(void); 33 uint32_t apic_read(unsigned reg); 34 void apic_write(unsigned reg, uint32_t val); 35 void apic_icr_write(uint32_t val, uint32_t dest); 36 uint32_t apic_id(void); 37 38 int enable_x2apic(void); 39 40 #endif 41