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