123456789101112131415161718192021222324 |
- unsigned char port_byte_in(unsigned short port) {
- unsigned char res;
- /*
- * `"=a" (res)' means: put result of `al' into `res' variable
- * `"d" (port)' means: load `port' into `dx'.
- */
- __asm__("in %%dx, %%al" : "=a" (res) : "d" (port));
- return res;
- }
- void port_byte_out(unsigned short port, unsigned char data) {
- __asm__("out %%al, %%dx" : : "a" (data), "d" (port));
- }
- unsigned short port_word_in(unsigned short port) {
- unsigned short res;
- __asm__("in %%dx, %%ax" : "=a" (res) : "d" (port));
- return res;
- }
- void port_word_out(unsigned short port, unsigned short data) {
- __asm__("out %%ax, %%dx" : : "a" (data), "d" (port));
- }
|