So und jetzt noch die korrekte Antwort:
- Portnummern gehen von 0 bis 65535. BYTE reicht dafür nicht. Deine Funktion wird irgendwann an ihre Grenzen stoßen. Nimm irgendwas wie SHORT, WORD oder was auch immer du dafür hast.
- Ich denke mal die Funktionen soll auch irgendwann mal irgendwas außer 0x00 in value reinschreiben, oder? Tut sie aber nicht.
- "m" (_port) übergibt dem Befehl in eine Speicherstelle. Möglich sind aber nur eine Zahl zwischen 0 und 255 oder dx.
Mein Vorschlag deswegen:
__asm__ volatile ("in %%dx,%%al":"=a" (value):"d" (_port));