Home | History | Annotate | Line # | Download | only in include
i82093var.h revision 1.1.8.2
      1  1.1.8.2  yamt /*	 $NetBSD: i82093var.h,v 1.1.8.2 2006/12/30 20:47:25 yamt Exp $ */
      2  1.1.8.2  yamt 
      3  1.1.8.2  yamt #include "opt_xen.h"
      4  1.1.8.2  yamt #define _IOAPIC_CUSTOM_RW
      5  1.1.8.2  yamt #include <x86/i82093var.h>
      6  1.1.8.2  yamt #include <hypervisor.h>
      7  1.1.8.2  yamt 
      8  1.1.8.2  yamt #ifdef XEN3
      9  1.1.8.2  yamt 
     10  1.1.8.2  yamt static inline  u_int32_t
     11  1.1.8.2  yamt ioapic_read_ul(struct ioapic_softc *sc, int regid)
     12  1.1.8.2  yamt {
     13  1.1.8.2  yamt 	physdev_op_t op;
     14  1.1.8.2  yamt 	int ret;
     15  1.1.8.2  yamt 
     16  1.1.8.2  yamt         op.cmd = PHYSDEVOP_APIC_READ;
     17  1.1.8.2  yamt 	op.u.apic_op.apic_physbase = sc->sc_pa;
     18  1.1.8.2  yamt 	op.u.apic_op.reg = regid;
     19  1.1.8.2  yamt 	ret = HYPERVISOR_physdev_op(&op);
     20  1.1.8.2  yamt 	if (ret) {
     21  1.1.8.2  yamt 		printf("PHYSDEVOP_APIC_READ ret %d\n", ret);
     22  1.1.8.2  yamt 		panic("PHYSDEVOP_APIC_READ");
     23  1.1.8.2  yamt 	}
     24  1.1.8.2  yamt 	return op.u.apic_op.value;
     25  1.1.8.2  yamt }
     26  1.1.8.2  yamt 
     27  1.1.8.2  yamt static inline void
     28  1.1.8.2  yamt ioapic_write_ul(struct ioapic_softc *sc, int regid, u_int32_t val)
     29  1.1.8.2  yamt {
     30  1.1.8.2  yamt 	physdev_op_t op;
     31  1.1.8.2  yamt 	int ret;
     32  1.1.8.2  yamt 
     33  1.1.8.2  yamt         op.cmd = PHYSDEVOP_APIC_WRITE;
     34  1.1.8.2  yamt 	op.u.apic_op.apic_physbase = sc->sc_pa;
     35  1.1.8.2  yamt 	op.u.apic_op.reg = regid;
     36  1.1.8.2  yamt 	op.u.apic_op.value = val;
     37  1.1.8.2  yamt 	ret = HYPERVISOR_physdev_op(&op);
     38  1.1.8.2  yamt 	if (ret) {
     39  1.1.8.2  yamt 		printf("PHYSDEVOP_APIC_WRITE ret %d\n", ret);
     40  1.1.8.2  yamt 		panic("PHYSDEVOP_APIC_WRITE");
     41  1.1.8.2  yamt 	}
     42  1.1.8.2  yamt }
     43  1.1.8.2  yamt 
     44  1.1.8.2  yamt #endif
     45