diff options
author | Marvin Borner | 2020-07-22 18:26:56 +0200 |
---|---|---|
committer | Marvin Borner | 2020-07-22 18:26:56 +0200 |
commit | 40cc5e32663cd0350b791b8e54825f564489343f (patch) | |
tree | 3561c2f379b98ac3c3005f9048bb5535a0d3952d /src/drivers/cpu.c | |
parent | c0a2074864e668b005eea8f50c6719bceb66bf20 (diff) |
Imported some things from master
Diffstat (limited to 'src/drivers/cpu.c')
-rw-r--r-- | src/drivers/cpu.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/drivers/cpu.c b/src/drivers/cpu.c new file mode 100644 index 0000000..eb96562 --- /dev/null +++ b/src/drivers/cpu.c @@ -0,0 +1,40 @@ +// MIT License, Copyright (c) 2020 Marvin Borner +// This file is a wrapper around some CPU asm calls + +#include <def.h> + +u8 inb(u16 port) +{ + u8 value; + __asm__ volatile("inb %1, %0" : "=a"(value) : "Nd"(port)); + return value; +} + +u16 inw(u16 port) +{ + u16 value; + __asm__ volatile("inw %1, %0" : "=a"(value) : "Nd"(port)); + return value; +} + +u32 inl(u16 port) +{ + u32 value; + __asm__ volatile("inl %1, %0" : "=a"(value) : "Nd"(port)); + return value; +} + +void outb(u16 port, u8 data) +{ + __asm__ volatile("outb %0, %1" ::"a"(data), "Nd"(port)); +} + +void outw(u16 port, u16 data) +{ + __asm__ volatile("outw %0, %1" ::"a"(data), "Nd"(port)); +} + +void outl(u16 port, u32 data) +{ + __asm__ volatile("outl %0, %1" ::"a"(data), "Nd"(port)); +} |