xref: /kvmtool/include/kvm/ioport.h (revision 7e19cb54a7cc584164c98912157f2ba08ecfb0ca)
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 Levin static 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 Levin static inline u16 ioport__read16(u16 *data)
218b1ff07eSPekka Enberg {
22aa73be70SMatt Evans 	return le16_to_cpu(*data);
238b1ff07eSPekka Enberg }
248b1ff07eSPekka Enberg 
ioport__read32(u32 * data)253fdf659dSSasha Levin static 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 Levin static 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 Levin static 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 Levin static 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