xref: /kvm-unit-tests/lib/x86/asm/io.h (revision 4f37c3a99b9146fd6ade62d0179e0864441962ce)
155601383SAlexander Gordeev #ifndef _ASM_X86_IO_H_
255601383SAlexander Gordeev #define _ASM_X86_IO_H_
326e9794eSLucas Meneghel Rodrigues 
4*4f37c3a9SAlexander Gordeev #define __iomem
5*4f37c3a9SAlexander Gordeev 
626e9794eSLucas Meneghel Rodrigues static inline unsigned char inb(unsigned short port)
726e9794eSLucas Meneghel Rodrigues {
826e9794eSLucas Meneghel Rodrigues     unsigned char value;
926e9794eSLucas Meneghel Rodrigues     asm volatile("inb %w1, %0" : "=a" (value) : "Nd" (port));
1026e9794eSLucas Meneghel Rodrigues     return value;
1126e9794eSLucas Meneghel Rodrigues }
1226e9794eSLucas Meneghel Rodrigues 
1326e9794eSLucas Meneghel Rodrigues static inline unsigned short inw(unsigned short port)
1426e9794eSLucas Meneghel Rodrigues {
1526e9794eSLucas Meneghel Rodrigues     unsigned short value;
1626e9794eSLucas Meneghel Rodrigues     asm volatile("inw %w1, %0" : "=a" (value) : "Nd" (port));
1726e9794eSLucas Meneghel Rodrigues     return value;
1826e9794eSLucas Meneghel Rodrigues }
1926e9794eSLucas Meneghel Rodrigues 
2026e9794eSLucas Meneghel Rodrigues static inline unsigned int inl(unsigned short port)
2126e9794eSLucas Meneghel Rodrigues {
2226e9794eSLucas Meneghel Rodrigues     unsigned int value;
2326e9794eSLucas Meneghel Rodrigues     asm volatile("inl %w1, %0" : "=a" (value) : "Nd" (port));
2426e9794eSLucas Meneghel Rodrigues     return value;
2526e9794eSLucas Meneghel Rodrigues }
2626e9794eSLucas Meneghel Rodrigues 
2726e9794eSLucas Meneghel Rodrigues static inline void outb(unsigned char value, unsigned short port)
2826e9794eSLucas Meneghel Rodrigues {
2926e9794eSLucas Meneghel Rodrigues     asm volatile("outb %b0, %w1" : : "a"(value), "Nd"(port));
3026e9794eSLucas Meneghel Rodrigues }
3126e9794eSLucas Meneghel Rodrigues 
3226e9794eSLucas Meneghel Rodrigues static inline void outw(unsigned short value, unsigned short port)
3326e9794eSLucas Meneghel Rodrigues {
3426e9794eSLucas Meneghel Rodrigues     asm volatile("outw %w0, %w1" : : "a"(value), "Nd"(port));
3526e9794eSLucas Meneghel Rodrigues }
3626e9794eSLucas Meneghel Rodrigues 
3726e9794eSLucas Meneghel Rodrigues static inline void outl(unsigned int value, unsigned short port)
3826e9794eSLucas Meneghel Rodrigues {
3926e9794eSLucas Meneghel Rodrigues     asm volatile("outl %0, %w1" : : "a"(value), "Nd"(port));
4026e9794eSLucas Meneghel Rodrigues }
4126e9794eSLucas Meneghel Rodrigues 
4255601383SAlexander Gordeev static inline unsigned long virt_to_phys(const void *virt)
4355601383SAlexander Gordeev {
4455601383SAlexander Gordeev     return (unsigned long)virt;
4555601383SAlexander Gordeev }
4655601383SAlexander Gordeev 
4755601383SAlexander Gordeev static inline void *phys_to_virt(unsigned long phys)
4855601383SAlexander Gordeev {
4955601383SAlexander Gordeev     return (void *)phys;
5055601383SAlexander Gordeev }
5155601383SAlexander Gordeev 
5226e9794eSLucas Meneghel Rodrigues #endif
53