diff options
author | Alex Auvolat <alex.auvolat@ens.fr> | 2014-12-01 18:20:45 +0100 |
---|---|---|
committer | Alex Auvolat <alex.auvolat@ens.fr> | 2014-12-01 18:20:45 +0100 |
commit | c7bcf94b1e70721d0f7bfb5ca383d996559c2559 (patch) | |
tree | 845f9e6c2193f444c80b1506438e9280a52585e5 /kernel/include/sys.h | |
parent | 8f936e07ecb5af4053ad7d457a32e69695cb357e (diff) | |
download | kogata-c7bcf94b1e70721d0f7bfb5ca383d996559c2559.tar.gz kogata-c7bcf94b1e70721d0f7bfb5ca383d996559c2559.zip |
Small adjustments:
- add missing vim modelines
- idt_set_ex_handler, idt_set_irq_handler
- inline inb,inw,outb,outw
- add defines for exceptions and irqs
Diffstat (limited to 'kernel/include/sys.h')
-rw-r--r-- | kernel/include/sys.h | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/kernel/include/sys.h b/kernel/include/sys.h index 319cbef..2304eec 100644 --- a/kernel/include/sys.h +++ b/kernel/include/sys.h @@ -2,10 +2,25 @@ #include <config.h> -void outb(uint16_t port, uint8_t value); -void outw(uint16_t port, uint16_t value); -uint8_t inb(uint16_t port); -uint16_t inw(uint16_t port); +static inline void outb(uint16_t port, uint8_t value) { + asm volatile("outb %1, %0" : : "dN"(port), "a"(value)); +} + +static inline void outw(uint16_t port, uint16_t value) { + asm volatile("outw %1, %0" : : "dN"(port), "a"(value)); +} + +static inline uint8_t inb(uint16_t port) { + uint8_t ret; + asm volatile("inb %1, %0" : "=a"(ret) : "dN"(port)); + return ret; +} + +static inline uint16_t inw(uint16_t port) { + uint16_t ret; + asm volatile("inw %1, %0" : "=a"(ret) : "dN"(port)); + return ret; +} void panic(const char* message, const char* file, int line); void panic_assert(const char* assertion, const char* file, int line); |