113a7760fSPekka Enberg #ifndef KVM__IOPORT_H 213a7760fSPekka Enberg #define KVM__IOPORT_H 313a7760fSPekka Enberg 4*4123ca55SMarc Zyngier #include "kvm/kvm-cpu.h" 53d62dea6SSasha Levin 63fdf659dSSasha Levin #include <asm/types.h> 73fdf659dSSasha Levin #include <linux/types.h> 8aa73be70SMatt Evans #include <linux/byteorder.h> 913a7760fSPekka Enberg 10beb095ebSCyrill Gorcunov /* some ports we reserve for own use */ 11beb095ebSCyrill Gorcunov #define IOPORT_DBG 0xe0 12c132a6d4SSasha Levin 13206c41f4SWill Deacon void ioport__map_irq(u8 *irq); 14ac38f433SPekka Enberg ioport__read8(u8 * data)153fdf659dSSasha Levinstatic inline u8 ioport__read8(u8 *data) 16fbc2fbf9SPekka Enberg { 17fbc2fbf9SPekka Enberg return *data; 18fbc2fbf9SPekka Enberg } 19aa73be70SMatt Evans /* On BE platforms, PCI I/O is byteswapped, i.e. LE, so swap back. */ ioport__read16(u16 * data)203fdf659dSSasha Levinstatic inline u16 ioport__read16(u16 *data) 218b1ff07eSPekka Enberg { 22aa73be70SMatt Evans return le16_to_cpu(*data); 238b1ff07eSPekka Enberg } 248b1ff07eSPekka Enberg ioport__read32(u32 * data)253fdf659dSSasha Levinstatic inline u32 ioport__read32(u32 *data) 26fbc2fbf9SPekka Enberg { 27aa73be70SMatt Evans return le32_to_cpu(*data); 28fbc2fbf9SPekka Enberg } 29fbc2fbf9SPekka Enberg ioport__write8(u8 * data,u8 value)303fdf659dSSasha Levinstatic inline void ioport__write8(u8 *data, u8 value) 31fbc2fbf9SPekka Enberg { 32fbc2fbf9SPekka Enberg *data = value; 33fbc2fbf9SPekka Enberg } 34fbc2fbf9SPekka Enberg ioport__write16(u16 * data,u16 value)353fdf659dSSasha Levinstatic inline void ioport__write16(u16 *data, u16 value) 368b1ff07eSPekka Enberg { 37aa73be70SMatt Evans *data = cpu_to_le16(value); 388b1ff07eSPekka Enberg } 398b1ff07eSPekka Enberg ioport__write32(u32 * data,u32 value)403fdf659dSSasha Levinstatic inline void ioport__write32(u32 *data, u32 value) 41fbc2fbf9SPekka Enberg { 42aa73be70SMatt Evans *data = cpu_to_le32(value); 43fbc2fbf9SPekka Enberg } 44fbc2fbf9SPekka Enberg 4513a7760fSPekka Enberg #endif /* KVM__IOPORT_H */ 46