From 08a1fc21bbbbc9b0496c5165eb5bf024fa0da543 Mon Sep 17 00:00:00 2001 From: Baptiste Wicht Date: Mon, 4 Nov 2013 20:00:19 +0100 Subject: [PATCH] Clean inline assembly --- kernel/src/kernel_utils.cpp | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/kernel/src/kernel_utils.cpp b/kernel/src/kernel_utils.cpp index 6be8ba80..4b4ffe99 100644 --- a/kernel/src/kernel_utils.cpp +++ b/kernel/src/kernel_utils.cpp @@ -2,20 +2,32 @@ uint8_t in_byte(uint16_t _port){ 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__ ("out %0, %1" : : "dN" (_port), "a" (_data)); + __asm__ __volatile__ ("in %[data], %[port]" + : [data] "=a" (rv) + : [port] "dN" (_port)); + + return rv; } uint16_t in_word(uint16_t _port){ 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; } -void out_word(uint16_t _port, uint16_t _data){ - __asm__ __volatile__ ("out %0, %1" : : "dN" (_port), "a" (_data)); +void out_byte (uint16_t _port, uint8_t _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)); }