xref: /kvm-unit-tests/lib/x86/asm/io.h (revision c865f654ffe4c5955038aaf74f702ba62f3eb014)
1*c865f654SCornelia Huck #ifndef _ASMX86_IO_H_
2*c865f654SCornelia Huck #define _ASMX86_IO_H_
326e9794eSLucas Meneghel Rodrigues 
44f37c3a9SAlexander Gordeev #define __iomem
54f37c3a9SAlexander Gordeev 
6a0940b31SAlexander Gordeev #define inb inb
inb(unsigned long port)7a0940b31SAlexander Gordeev static inline uint8_t inb(unsigned long port)
826e9794eSLucas Meneghel Rodrigues {
926e9794eSLucas Meneghel Rodrigues     unsigned char value;
10a0940b31SAlexander Gordeev     asm volatile("inb %w1, %0" : "=a" (value) : "Nd" ((unsigned short)port));
1126e9794eSLucas Meneghel Rodrigues     return value;
1226e9794eSLucas Meneghel Rodrigues }
1326e9794eSLucas Meneghel Rodrigues 
14a0940b31SAlexander Gordeev #define inw inw
inw(unsigned long port)15a0940b31SAlexander Gordeev static inline uint16_t inw(unsigned long port)
1626e9794eSLucas Meneghel Rodrigues {
1726e9794eSLucas Meneghel Rodrigues     unsigned short value;
18a0940b31SAlexander Gordeev     asm volatile("inw %w1, %0" : "=a" (value) : "Nd" ((unsigned short)port));
1926e9794eSLucas Meneghel Rodrigues     return value;
2026e9794eSLucas Meneghel Rodrigues }
2126e9794eSLucas Meneghel Rodrigues 
22a0940b31SAlexander Gordeev #define inl inl
inl(unsigned long port)23a0940b31SAlexander Gordeev static inline uint32_t inl(unsigned long port)
2426e9794eSLucas Meneghel Rodrigues {
2526e9794eSLucas Meneghel Rodrigues     unsigned int value;
26a0940b31SAlexander Gordeev     asm volatile("inl %w1, %0" : "=a" (value) : "Nd" ((unsigned short)port));
2726e9794eSLucas Meneghel Rodrigues     return value;
2826e9794eSLucas Meneghel Rodrigues }
2926e9794eSLucas Meneghel Rodrigues 
30a0940b31SAlexander Gordeev #define outb outb
outb(uint8_t value,unsigned long port)31a0940b31SAlexander Gordeev static inline void outb(uint8_t value, unsigned long port)
3226e9794eSLucas Meneghel Rodrigues {
33a0940b31SAlexander Gordeev     asm volatile("outb %b0, %w1" : : "a"(value), "Nd"((unsigned short)port));
3426e9794eSLucas Meneghel Rodrigues }
3526e9794eSLucas Meneghel Rodrigues 
36a0940b31SAlexander Gordeev #define outw outw
outw(uint16_t value,unsigned long port)37a0940b31SAlexander Gordeev static inline void outw(uint16_t value, unsigned long port)
3826e9794eSLucas Meneghel Rodrigues {
39a0940b31SAlexander Gordeev     asm volatile("outw %w0, %w1" : : "a"(value), "Nd"((unsigned short)port));
4026e9794eSLucas Meneghel Rodrigues }
4126e9794eSLucas Meneghel Rodrigues 
42a0940b31SAlexander Gordeev #define outl outl
outl(uint32_t value,unsigned long port)43a0940b31SAlexander Gordeev static inline void outl(uint32_t value, unsigned long port)
4426e9794eSLucas Meneghel Rodrigues {
45a0940b31SAlexander Gordeev     asm volatile("outl %0, %w1" : : "a"(value), "Nd"((unsigned short)port));
4626e9794eSLucas Meneghel Rodrigues }
4726e9794eSLucas Meneghel Rodrigues 
48a0940b31SAlexander Gordeev #define virt_to_phys virt_to_phys
virt_to_phys(const void * virt)4955601383SAlexander Gordeev static inline unsigned long virt_to_phys(const void *virt)
5055601383SAlexander Gordeev {
5155601383SAlexander Gordeev     return (unsigned long)virt;
5255601383SAlexander Gordeev }
5355601383SAlexander Gordeev 
54a0940b31SAlexander Gordeev #define phys_to_virt phys_to_virt
phys_to_virt(unsigned long phys)5555601383SAlexander Gordeev static inline void *phys_to_virt(unsigned long phys)
5655601383SAlexander Gordeev {
5755601383SAlexander Gordeev     return (void *)phys;
5855601383SAlexander Gordeev }
5955601383SAlexander Gordeev 
60a0940b31SAlexander Gordeev #define ioremap ioremap
61f1abb07bSAlexander Gordeev void __iomem *ioremap(phys_addr_t phys_addr, size_t size);
62f1abb07bSAlexander Gordeev 
63a0940b31SAlexander Gordeev #include <asm-generic/io.h>
64a0940b31SAlexander Gordeev 
6526e9794eSLucas Meneghel Rodrigues #endif
66