Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 #ifndef _ASM_X86_SHARED_IO_H
0003 #define _ASM_X86_SHARED_IO_H
0004 
0005 #include <linux/types.h>
0006 
0007 #define BUILDIO(bwl, bw, type)                      \
0008 static inline void __out##bwl(type value, u16 port)         \
0009 {                                   \
0010     asm volatile("out" #bwl " %" #bw "0, %w1"           \
0011              : : "a"(value), "Nd"(port));           \
0012 }                                   \
0013                                     \
0014 static inline type __in##bwl(u16 port)                  \
0015 {                                   \
0016     type value;                         \
0017     asm volatile("in" #bwl " %w1, %" #bw "0"            \
0018              : "=a"(value) : "Nd"(port));           \
0019     return value;                           \
0020 }
0021 
0022 BUILDIO(b, b, u8)
0023 BUILDIO(w, w, u16)
0024 BUILDIO(l,  , u32)
0025 #undef BUILDIO
0026 
0027 #define inb __inb
0028 #define inw __inw
0029 #define inl __inl
0030 #define outb __outb
0031 #define outw __outw
0032 #define outl __outl
0033 
0034 #endif