60 |
{ |
{ |
61 |
unsigned char __v; |
unsigned char __v; |
62 |
asm volatile ("inb %1,%0" : "=a" (__v) : "dN"(__p)); |
asm volatile ("inb %1,%0" : "=a" (__v) : "dN"(__p)); |
63 |
return v; |
return __v; |
64 |
} |
} |
65 |
|
|
66 |
static __inline__ unsigned short inw(unsigned short __p) |
static __inline__ unsigned short inw(unsigned short __p) |
67 |
{ |
{ |
68 |
unsigned short __v; |
unsigned short __v; |
69 |
asm volatile ("inw %1,%0" : "=a" (__v) : "dN"(__p)); |
asm volatile ("inw %1,%0" : "=a" (__v) : "dN"(__p)); |
70 |
return v; |
return __v; |
71 |
} |
} |
72 |
|
|
73 |
static __inline__ unsigned int inl(unsigned short __p) |
static __inline__ unsigned int inl(unsigned short __p) |
74 |
{ |
{ |
75 |
unsigned int __v; |
unsigned int __v; |
76 |
asm volatile ("inl %1,%0" : "=a" (__v) : "dN"(__p)); |
asm volatile ("inl %1,%0" : "=a" (__v) : "dN"(__p)); |
77 |
return v; |
return __v; |
78 |
} |
} |
79 |
|
|
80 |
/* String I/O macros */ |
/* String I/O macros */ |