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