forked from Minki/linux
x86: Adjust types used in port I/O helpers
Change port I/O helpers to use u8/u16/u32 instead of unsigned char/short/int for values. Use u16 instead of int for port number. It aligns the helpers with implementation in boot stub in preparation for consolidation. Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com> Reviewed-by: Dave Hansen <dave.hansen@linux.intel.com> Reviewed-by: Thomas Gleixner <tglx@linutronix.de> Link: https://lkml.kernel.org/r/20220405232939.73860-14-kirill.shutemov@linux.intel.com
This commit is contained in:
parent
4b05f81504
commit
15104de122
@ -258,37 +258,37 @@ static inline void slow_down_io(void)
|
||||
#endif
|
||||
|
||||
#define BUILDIO(bwl, bw, type) \
|
||||
static inline void out##bwl(unsigned type value, int port) \
|
||||
static inline void out##bwl(type value, u16 port) \
|
||||
{ \
|
||||
asm volatile("out" #bwl " %" #bw "0, %w1" \
|
||||
: : "a"(value), "Nd"(port)); \
|
||||
} \
|
||||
\
|
||||
static inline unsigned type in##bwl(int port) \
|
||||
static inline type in##bwl(u16 port) \
|
||||
{ \
|
||||
unsigned type value; \
|
||||
type value; \
|
||||
asm volatile("in" #bwl " %w1, %" #bw "0" \
|
||||
: "=a"(value) : "Nd"(port)); \
|
||||
return value; \
|
||||
} \
|
||||
\
|
||||
static inline void out##bwl##_p(unsigned type value, int port) \
|
||||
static inline void out##bwl##_p(type value, u16 port) \
|
||||
{ \
|
||||
out##bwl(value, port); \
|
||||
slow_down_io(); \
|
||||
} \
|
||||
\
|
||||
static inline unsigned type in##bwl##_p(int port) \
|
||||
static inline type in##bwl##_p(u16 port) \
|
||||
{ \
|
||||
unsigned type value = in##bwl(port); \
|
||||
type value = in##bwl(port); \
|
||||
slow_down_io(); \
|
||||
return value; \
|
||||
} \
|
||||
\
|
||||
static inline void outs##bwl(int port, const void *addr, unsigned long count) \
|
||||
static inline void outs##bwl(u16 port, const void *addr, unsigned long count) \
|
||||
{ \
|
||||
if (cc_platform_has(CC_ATTR_GUEST_UNROLL_STRING_IO)) { \
|
||||
unsigned type *value = (unsigned type *)addr; \
|
||||
type *value = (type *)addr; \
|
||||
while (count) { \
|
||||
out##bwl(*value, port); \
|
||||
value++; \
|
||||
@ -301,10 +301,10 @@ static inline void outs##bwl(int port, const void *addr, unsigned long count) \
|
||||
} \
|
||||
} \
|
||||
\
|
||||
static inline void ins##bwl(int port, void *addr, unsigned long count) \
|
||||
static inline void ins##bwl(u16 port, void *addr, unsigned long count) \
|
||||
{ \
|
||||
if (cc_platform_has(CC_ATTR_GUEST_UNROLL_STRING_IO)) { \
|
||||
unsigned type *value = (unsigned type *)addr; \
|
||||
type *value = (type *)addr; \
|
||||
while (count) { \
|
||||
*value = in##bwl(port); \
|
||||
value++; \
|
||||
@ -317,9 +317,9 @@ static inline void ins##bwl(int port, void *addr, unsigned long count) \
|
||||
} \
|
||||
}
|
||||
|
||||
BUILDIO(b, b, char)
|
||||
BUILDIO(w, w, short)
|
||||
BUILDIO(l, , int)
|
||||
BUILDIO(b, b, u8)
|
||||
BUILDIO(w, w, u16)
|
||||
BUILDIO(l, , u32)
|
||||
|
||||
#define inb inb
|
||||
#define inw inw
|
||||
|
Loading…
Reference in New Issue
Block a user