Go to the source code of this file.
Defines | |
| #define | __SLOW_DOWN_IO __asm__ __volatile__("outb %al,$0x80") |
| #define | SLOW_DOWN_IO __SLOW_DOWN_IO |
| #define | __OUT1(s, x) extern inline void __out##s(unsigned x value, unsigned short port) { |
| #define | __OUT2(s, s1, s2) __asm__ __volatile__ ("out" #s " %" s1 "0,%" s2 "1" |
| #define | __OUT(s, s1, x) |
| #define | __IN1(s) extern inline unsigned int __in##s(unsigned short port) { unsigned int _v; |
| #define | __IN2(s, s1, s2) __asm__ __volatile__ ("in" #s " %" s2 "1,%" s1 "0" |
| #define | __IN(s, s1, i...) |
| #define | __INS(s) |
| #define | __OUTS(s) |
| #define | outb(val, port) |
| #define | inb(port) |
| #define | outb_p(val, port) |
| #define | inb_p(port) |
| #define | outw(val, port) |
| #define | inw(port) |
| #define | outw_p(val, port) |
| #define | inw_p(port) |
| #define | outl(val, port) |
| #define | inl(port) |
| #define | outl_p(val, port) |
| #define | inl_p(port) |
Functions | |
| __IN (b,"b","0"(0)) __IN(w | |
Variables | |
| w | |
| #define __IN | ( | s, | |||
| s1, | |||||
| i... | ) |
Value:
__IN1(s) __IN2(s,s1,"w") : "=a" (_v) : "d" (port) ,##i ); return _v; } \ __IN1(s##c) __IN2(s,s1,"") : "=a" (_v) : "i" (port) ,##i ); return _v; } \ __IN1(s##_p) __IN2(s,s1,"w") : "=a" (_v) : "d" (port) ,##i ); SLOW_DOWN_IO; return _v; } \ __IN1(s##c_p) __IN2(s,s1,"") : "=a" (_v) : "i" (port) ,##i ); SLOW_DOWN_IO; return _v; }
| #define __IN1 | ( | s | ) | extern inline unsigned int __in##s(unsigned short port) { unsigned int _v; |
| #define __IN2 | ( | s, | |||
| s1, | |||||
| s2 | ) | __asm__ __volatile__ ("in" #s " %" s2 "1,%" s1 "0" |
| #define __INS | ( | s | ) |
| #define __OUT | ( | s, | |||
| s1, | |||||
| x | ) |
| #define __OUT1 | ( | s, | |||
| x | ) | extern inline void __out##s(unsigned x value, unsigned short port) { |
| #define __OUT2 | ( | s, | |||
| s1, | |||||
| s2 | ) | __asm__ __volatile__ ("out" #s " %" s1 "0,%" s2 "1" |
| #define __OUTS | ( | s | ) |
| #define __SLOW_DOWN_IO __asm__ __volatile__("outb %al,$0x80") |
Thanks to James van Artsdalen for a better timing-fix than the two short jumps: using outb's to a nonexistent port seems to guarantee better timings even on fast machines.
On the other hand, I'd like to be sure of a non-existent port: I feel a bit unsafe about using 0x80 (should be safe, though)
Linus
| #define inb | ( | port | ) |
Value:
((__builtin_constant_p((port)) && (port) < 256) ? \
__inbc(port) : \
__inb(port))
Definition at line 120 of file io.h.
Referenced by get_dma_residue().
| #define inb_p | ( | port | ) |
| #define inl | ( | port | ) |
| #define inl_p | ( | port | ) |
| #define inw | ( | port | ) |
| #define inw_p | ( | port | ) |
| #define outb | ( | val, | |||
| port | ) |
Value:
((__builtin_constant_p((port)) && (port) < 256) ? \
__outbc((val),(port)) : \
__outb((val),(port)))
Definition at line 115 of file io.h.
Referenced by clear_dma_ff(), disable_dma(), enable_dma(), set_dma_addr(), set_dma_count(), set_dma_mode(), and set_dma_page().
| #define outb_p | ( | val, | |||
| port | ) |
| #define outl | ( | val, | |||
| port | ) |
| #define outl_p | ( | val, | |||
| port | ) |
| #define outw | ( | val, | |||
| port | ) |
| #define outw_p | ( | val, | |||
| port | ) |
| __IN | ( | b | , | |
| "b" | , | |||
| "0" | (0) | |||
| ) |
1.4.6-5