X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Finclude%2Fdevices%2Fapic.h;h=40415e6c4188f334d9e9f887ccb5344725c16c17;hb=cd89b672b4f7e1b64c86ff0234a9935946533590;hp=5a11639697bea7711fa83dbeddb9ce7ab5342dc3;hpb=37c18b2c2335a41c68c2f0b779fd2b7d51ab216d;p=palacios-OLD.git diff --git a/palacios/include/devices/apic.h b/palacios/include/devices/apic.h index 5a11639..40415e6 100644 --- a/palacios/include/devices/apic.h +++ b/palacios/include/devices/apic.h @@ -25,7 +25,32 @@ #include -int v3_apic_raise_intr(struct vm_device * apic_dev, int intr_num); +typedef enum {IPI_FIXED = 0, + IPI_LOWEST_PRIO = 1, + IPI_SMI = 2, + IPI_NMI = 4, + IPI_INIT = 5, + IPI_EXINT = 7 } ipi_mode_t; + + +struct v3_gen_ipi { + uint8_t vector; + ipi_mode_t mode; + + uint8_t logical : 1; + uint8_t trigger_mode : 1; + uint8_t dst_shorthand : 2; + + uint8_t dst; +} __attribute__((packed)); + +int v3_apic_send_ipi(struct v3_vm_info * vm, struct vm_device * dev, + struct v3_gen_ipi * ipi); + +int v3_apic_raise_intr(struct v3_vm_info * vm, struct vm_device * apic_dev, + uint32_t irq, uint32_t dst); + + #endif // ! __V3VEE__