diff options
author | Brett Weiland <brett_weiland@bpcspace.com> | 2021-08-24 14:09:29 -0500 |
---|---|---|
committer | Brett Weiland <brett_weiland@bpcspace.com> | 2021-08-24 14:09:29 -0500 |
commit | 9b22a6965579ea1867aea291d910c96f386b518b (patch) | |
tree | d06dbb9c4708f1cc713bcb115b32ff9bce4cf9b9 /src/include/io.h | |
parent | bad4b0e9bdfee336bfc1c23761408279eaec1558 (diff) |
major backup 8.24.21
Diffstat (limited to 'src/include/io.h')
-rw-r--r-- | src/include/io.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/include/io.h b/src/include/io.h new file mode 100644 index 0000000..fb19bdc --- /dev/null +++ b/src/include/io.h @@ -0,0 +1,38 @@ +#ifndef io_header +#define io_header + +#include <stdint.h> +#include <printf.h> + +static inline void outb(uint16_t port, uint8_t value) { + asm volatile("outb %1, %0" :: "a"(value), "Nd"(port)); +} + +static inline uint8_t inb(uint16_t port) { + uint8_t ret; + asm volatile("inb %0, %1" : "=a"(ret) : "Nd"(port)); + return(ret); +} + +static inline void io_wait() { + asm volatile("outb 0x80, %%al"::"a"(0)); +} + +static inline uint64_t read_tsc() { + uint64_t time; + asm volatile("xor rax, rax\n" + "rdtsc\n" + "shl rdx, 32\n" + "or rax, rdx\n" + "mov %0, rax\n" + :"=r"(time):); + return time; + +} + +void outb_wait(uint16_t port, uint8_t value); +void read_msr(uint32_t addr, uint64_t *value); +void write_msr(uint32_t addr, uint64_t value); +void hlt(); +uint64_t get_rip(); +#endif |