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