xref: /kvm-unit-tests/lib/x86/asm/io.h (revision 55601383cca6221889c5641e4bf6cfdbb855b213)
1*55601383SAlexander Gordeev #ifndef _ASM_X86_IO_H_
2*55601383SAlexander Gordeev #define _ASM_X86_IO_H_
326e9794eSLucas Meneghel Rodrigues 
426e9794eSLucas Meneghel Rodrigues static inline unsigned char inb(unsigned short port)
526e9794eSLucas Meneghel Rodrigues {
626e9794eSLucas Meneghel Rodrigues     unsigned char value;
726e9794eSLucas Meneghel Rodrigues     asm volatile("inb %w1, %0" : "=a" (value) : "Nd" (port));
826e9794eSLucas Meneghel Rodrigues     return value;
926e9794eSLucas Meneghel Rodrigues }
1026e9794eSLucas Meneghel Rodrigues 
1126e9794eSLucas Meneghel Rodrigues static inline unsigned short inw(unsigned short port)
1226e9794eSLucas Meneghel Rodrigues {
1326e9794eSLucas Meneghel Rodrigues     unsigned short value;
1426e9794eSLucas Meneghel Rodrigues     asm volatile("inw %w1, %0" : "=a" (value) : "Nd" (port));
1526e9794eSLucas Meneghel Rodrigues     return value;
1626e9794eSLucas Meneghel Rodrigues }
1726e9794eSLucas Meneghel Rodrigues 
1826e9794eSLucas Meneghel Rodrigues static inline unsigned int inl(unsigned short port)
1926e9794eSLucas Meneghel Rodrigues {
2026e9794eSLucas Meneghel Rodrigues     unsigned int value;
2126e9794eSLucas Meneghel Rodrigues     asm volatile("inl %w1, %0" : "=a" (value) : "Nd" (port));
2226e9794eSLucas Meneghel Rodrigues     return value;
2326e9794eSLucas Meneghel Rodrigues }
2426e9794eSLucas Meneghel Rodrigues 
2526e9794eSLucas Meneghel Rodrigues static inline void outb(unsigned char value, unsigned short port)
2626e9794eSLucas Meneghel Rodrigues {
2726e9794eSLucas Meneghel Rodrigues     asm volatile("outb %b0, %w1" : : "a"(value), "Nd"(port));
2826e9794eSLucas Meneghel Rodrigues }
2926e9794eSLucas Meneghel Rodrigues 
3026e9794eSLucas Meneghel Rodrigues static inline void outw(unsigned short value, unsigned short port)
3126e9794eSLucas Meneghel Rodrigues {
3226e9794eSLucas Meneghel Rodrigues     asm volatile("outw %w0, %w1" : : "a"(value), "Nd"(port));
3326e9794eSLucas Meneghel Rodrigues }
3426e9794eSLucas Meneghel Rodrigues 
3526e9794eSLucas Meneghel Rodrigues static inline void outl(unsigned int value, unsigned short port)
3626e9794eSLucas Meneghel Rodrigues {
3726e9794eSLucas Meneghel Rodrigues     asm volatile("outl %0, %w1" : : "a"(value), "Nd"(port));
3826e9794eSLucas Meneghel Rodrigues }
3926e9794eSLucas Meneghel Rodrigues 
40*55601383SAlexander Gordeev static inline unsigned long virt_to_phys(const void *virt)
41*55601383SAlexander Gordeev {
42*55601383SAlexander Gordeev     return (unsigned long)virt;
43*55601383SAlexander Gordeev }
44*55601383SAlexander Gordeev 
45*55601383SAlexander Gordeev static inline void *phys_to_virt(unsigned long phys)
46*55601383SAlexander Gordeev {
47*55601383SAlexander Gordeev     return (void *)phys;
48*55601383SAlexander Gordeev }
49*55601383SAlexander Gordeev 
5026e9794eSLucas Meneghel Rodrigues #endif
51