VMM: Rename vmx_vcpu -> guest_pcore (XCC)
[akaros.git] / kern / arch / x86 / ioapic.h
index 87733ac..eff662e 100644 (file)
@@ -7,40 +7,10 @@
  * in the LICENSE file.
  */
 
-#ifndef ROS_KERN_IOAPIC_H
-#define ROS_KERN_IOAPIC_H
-struct bus {
-       uint8_t type;
-       uint8_t busno;
-       uint8_t po;
-       uint8_t el;
+#pragma once
 
-       struct aintr*   aintr;                  /* interrupts tied to this bus */
-       struct bus*     next;
-};
-
-struct aintr {
-       // no idea yet. PCMPintr* intr;
-       struct apic*    apic;
-       struct aintr*   next;
-};
-
-struct apic {
-       int     useable;
-       int     type;
-       int     apicno;
-       uint32_t*       addr;                   /* register base address */
-       uint32_t        paddr;
-       int     flags;                  /* PcmpBP|PcmpEN */
-
-       //spinlock_t lock;              /* I/O APIC: register access */
-       int     mre;                    /* I/O APIC: maximum redirection entry */
-
-       int     lintr[2];               /* Local APIC */
-       int     machno;
-
-       int     online;
-};
+#include <atomic.h>
+#include <arch/apic.h>
 
 enum {
        MaxAPICNO       = 254,          /* 255 is physical broadcast */
@@ -83,8 +53,11 @@ enum {
        IOAPIC_PBASE    = 0xfec00000, /* default *physical* address */
 };
 
-extern void ioapicinit(struct apic*, int);
-extern void ioapicrdtr(struct apic*, int unused_int, int*, int*);
-extern void ioapicrdtw(struct apic*, int unused_int, int, int);
+extern int mpisabusno;
 
-#endif /* ROS_KERN_IOAPIC_H */
+void ioapicintrinit(int busno, int apicno, int intin, int devno, int lo);
+void ioapiconline(void);
+void ioapicinit(int id, int ibase, uintptr_t pa);
+void ioapicrdtr(struct apic*, int unused_int, int*, int*);
+void ioapicrdtw(struct apic*, int unused_int, int, int);
+char *ioapicdump(char *start, char *end);