1 #define outb(value,port) \ 2 __asm__ ("outb %%al,%%dx"::"a" (value),"d" (port)) 3 4 5 #define inb(port) ({ \ 6 unsigned char _v; \ 7 __asm__ volatile ("inb %%dx,%%al":"=a" (_v):"d" (port)); \ 8 _v; \ 9 }) 10 11 #define outb_p(value,port) \ 12 __asm__ ("outb %%al,%%dx\n" \ 13 "\tjmp 1f\n" \ 14 "1:\tjmp 1f\n" \ 15 "1:"::"a" (value),"d" (port)) 16 17 #define inb_p(port) ({ \ 18 unsigned char _v; \ 19 __asm__ volatile ("inb %%dx,%%al\n" \ 20 "\tjmp 1f\n" \ 21 "1:\tjmp 1f\n" \ 22 "1:":"=a" (_v):"d" (port)); \ 23 _v; \ 24 })