xref: /kvm-unit-tests/lib/x86/apic.h (revision 7d36db351752e29ad27eaafe3f102de7064e429b)
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