Subversion Repositories HelenOS

Rev

Rev 4343 | Rev 4345 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4343 Rev 4344
Line 71... Line 71...
71
 * Get byte from port
71
 * Get byte from port
72
 *
72
 *
73
 * @param port Port to read from
73
 * @param port Port to read from
74
 * @return Value read
74
 * @return Value read
75
 */
75
 */
76
static inline uint8_t pio_read_8(uint16_t port)
76
static inline uint8_t pio_read_8(ioport8_t *port)
77
{
77
{
78
    uint8_t val;
78
    uint8_t val;
79
 
79
 
80
    asm volatile ("inb %w1, %b0 \n" : "=a" (val) : "d" (port));
80
    asm volatile ("inb %w1, %b0 \n" : "=a" (val) : "d" (port));
81
    return val;
81
    return val;
82
}
82
}
83
 
83
 
-
 
84
/** Word from port
-
 
85
 *
-
 
86
 * Get word from port
-
 
87
 *
-
 
88
 * @param port Port to read from
-
 
89
 * @return Value read
-
 
90
 */
-
 
91
static inline uint16_t pio_read_16(ioport16_t *port)
-
 
92
{
-
 
93
    uint16_t val;
-
 
94
   
-
 
95
    asm volatile ("inw %w1, %w0 \n" : "=a" (val) : "d" (port));
-
 
96
    return val;
-
 
97
}
-
 
98
 
-
 
99
/** Double word from port
-
 
100
 *
-
 
101
 * Get double word from port
-
 
102
 *
-
 
103
 * @param port Port to read from
-
 
104
 * @return Value read
-
 
105
 */
-
 
106
static inline uint32_t pio_read_32(ioport32_t *port)
-
 
107
{
-
 
108
    uint32_t val;
-
 
109
   
-
 
110
    asm volatile ("inl %w1, %0 \n" : "=a" (val) : "d" (port));
-
 
111
    return val;
-
 
112
}
-
 
113
 
84
/** Byte to port
114
/** Byte to port
85
 *
115
 *
86
 * Output byte to port
116
 * Output byte to port
87
 *
117
 *
88
 * @param port Port to write to
118
 * @param port Port to write to
89
 * @param val Value to write
119
 * @param val Value to write
90
 */
120
 */
91
static inline void pio_write_8(uint16_t port, uint8_t val)
121
static inline void pio_write_8(ioport8_t *port, uint8_t val)
92
{
122
{
93
    asm volatile ("outb %b0, %w1\n" : : "a" (val), "d" (port));
123
    asm volatile ("outb %b0, %w1\n" : : "a" (val), "d" (port));
94
}
124
}
95
 
125
 
-
 
126
/** Word to port
-
 
127
 *
-
 
128
 * Output word to port
-
 
129
 *
-
 
130
 * @param port Port to write to
-
 
131
 * @param val Value to write
-
 
132
 */
-
 
133
static inline void pio_write_16(ioport16_t *port, uint16_t val)
-
 
134
{
-
 
135
    asm volatile ("outw %w0, %w1\n" : : "a" (val), "d" (port));
-
 
136
}
-
 
137
 
-
 
138
/** Double word to port
-
 
139
 *
-
 
140
 * Output double word to port
-
 
141
 *
-
 
142
 * @param port Port to write to
-
 
143
 * @param val Value to write
-
 
144
 */
-
 
145
static inline void pio_write_32(ioport32_t *port, uint32_t val)
-
 
146
{
-
 
147
    asm volatile ("outl %0, %w1\n" : : "a" (val), "d" (port));
-
 
148
}
-
 
149
 
96
/** Swap Hidden part of GS register with visible one */
150
/** Swap Hidden part of GS register with visible one */
97
static inline void swapgs(void)
151
static inline void swapgs(void)
98
{
152
{
99
    asm volatile("swapgs");
153
    asm volatile("swapgs");
100
}
154
}