Clean inline assembly

This commit is contained in:
Baptiste Wicht 2013-11-04 20:00:19 +01:00
parent 3f3b388d61
commit 08a1fc21bb

View File

@ -2,20 +2,32 @@
uint8_t in_byte(uint16_t _port){ uint8_t in_byte(uint16_t _port){
uint8_t rv; uint8_t rv;
__asm__ __volatile__ ("in %0, %1" : "=a" (rv) : "dN" (_port));
return rv;
}
void out_byte (uint16_t _port, uint8_t _data){ __asm__ __volatile__ ("in %[data], %[port]"
__asm__ __volatile__ ("out %0, %1" : : "dN" (_port), "a" (_data)); : [data] "=a" (rv)
: [port] "dN" (_port));
return rv;
} }
uint16_t in_word(uint16_t _port){ uint16_t in_word(uint16_t _port){
uint16_t rv; uint16_t rv;
__asm__ __volatile__ ("in %0, %1" : "=a" (rv) : "dN" (_port));
__asm__ __volatile__ ("in %[data], %[port]"
: [data] "=a" (rv)
: [port] "dN" (_port));
return rv; return rv;
} }
void out_word(uint16_t _port, uint16_t _data){ void out_byte (uint16_t _port, uint8_t _data){
__asm__ __volatile__ ("out %0, %1" : : "dN" (_port), "a" (_data)); __asm__ __volatile__ ("out %[port], %[data]"
: /* No outputs */
: [port] "dN" (_port), [data] "a" (_data));
}
void out_word(uint16_t _port, uint16_t _data){
__asm__ __volatile__ ("out %[port], %[data]"
: /* No outputs */
: [port] "dN" (_port), [data] "a" (_data));
} }