Subversion Repositories HelenOS

Rev

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

Rev 3902 Rev 3929
Line 103... Line 103...
103
 * Output byte to port
103
 * Output byte to port
104
 *
104
 *
105
 * @param port Port to write to
105
 * @param port Port to write to
106
 * @param val Value to write
106
 * @param val Value to write
107
 */
107
 */
108
static inline void pio_write_8(uint16_t port, uint8_t val)
108
static inline void pio_write_8(ioport8_t *port, uint8_t val)
109
{
109
{
110
    asm volatile ("outb %b0, %w1\n" : : "a" (val), "d" (port) );
110
    asm volatile ("outb %b0, %w1\n" : : "a" (val), "d" (port));
111
}
111
}
112
 
112
 
113
/** Word to port
113
/** Word to port
114
 *
114
 *
115
 * Output word to port
115
 * Output word to port
116
 *
116
 *
117
 * @param port Port to write to
117
 * @param port Port to write to
118
 * @param val Value to write
118
 * @param val Value to write
119
 */
119
 */
120
static inline void pio_write_16(uint16_t port, uint16_t val)
120
static inline void pio_write_16(ioport16_t *port, uint16_t val)
121
{
121
{
122
    asm volatile ("outw %w0, %w1\n" : : "a" (val), "d" (port) );
122
    asm volatile ("outw %w0, %w1\n" : : "a" (val), "d" (port));
123
}
123
}
124
 
124
 
125
/** Double word to port
125
/** Double word to port
126
 *
126
 *
127
 * Output double word to port
127
 * Output double word to port
128
 *
128
 *
129
 * @param port Port to write to
129
 * @param port Port to write to
130
 * @param val Value to write
130
 * @param val Value to write
131
 */
131
 */
132
static inline void pio_write_32(uint16_t port, uint32_t val)
132
static inline void pio_write_32(ioport32_t *port, uint32_t val)
133
{
133
{
134
    asm volatile ("outl %l0, %w1\n" : : "a" (val), "d" (port) );
134
    asm volatile ("outl %l0, %w1\n" : : "a" (val), "d" (port));
135
}
135
}
136
 
136
 
137
/** Byte from port
137
/** Byte from port
138
 *
138
 *
139
 * Get byte from port
139
 * Get byte from port
140
 *
140
 *
141
 * @param port Port to read from
141
 * @param port Port to read from
142
 * @return Value read
142
 * @return Value read
143
 */
143
 */
144
static inline uint8_t pio_read_8(uint16_t port)
144
static inline uint8_t pio_read_8(ioport8_t *port)
145
{
145
{
146
    uint8_t val;
146
    uint8_t val;
147
   
147
   
148
    asm volatile ("inb %w1, %b0 \n" : "=a" (val) : "d" (port) );
148
    asm volatile ("inb %w1, %b0 \n" : "=a" (val) : "d" (port));
149
    return val;
149
    return val;
150
}
150
}
151
 
151
 
152
/** Word from port
152
/** Word from port
153
 *
153
 *
154
 * Get word from port
154
 * Get word from port
155
 *
155
 *
156
 * @param port Port to read from
156
 * @param port Port to read from
157
 * @return Value read
157
 * @return Value read
158
 */
158
 */
159
static inline uint16_t pio_read_16(uint16_t port)
159
static inline uint16_t pio_read_16(ioport16_t *port)
160
{
160
{
161
    uint16_t val;
161
    uint16_t val;
162
   
162
   
163
    asm volatile ("inw %w1, %w0 \n" : "=a" (val) : "d" (port) );
163
    asm volatile ("inw %w1, %w0 \n" : "=a" (val) : "d" (port));
164
    return val;
164
    return val;
165
}
165
}
166
 
166
 
167
/** Double word from port
167
/** Double word from port
168
 *
168
 *
169
 * Get double word from port
169
 * Get double word from port
170
 *
170
 *
171
 * @param port Port to read from
171
 * @param port Port to read from
172
 * @return Value read
172
 * @return Value read
173
 */
173
 */
174
static inline uint32_t pio_read_32(uint16_t port)
174
static inline uint32_t pio_read_32(ioport32_t *port)
175
{
175
{
176
    uint32_t val;
176
    uint32_t val;
177
   
177
   
178
    asm volatile ("inl %w1, %l0 \n" : "=a" (val) : "d" (port) );
178
    asm volatile ("inl %w1, %l0 \n" : "=a" (val) : "d" (port));
179
    return val;
179
    return val;
180
}
180
}
181
 
181
 
182
/** Enable interrupts.
182
/** Enable interrupts.
183
 *
183
 *