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