aboutsummaryrefslogtreecommitdiff
path: root/src/core/asm.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/asm.hpp')
-rw-r--r--src/core/asm.hpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/core/asm.hpp b/src/core/asm.hpp
new file mode 100644
index 0000000..8a931f6
--- /dev/null
+++ b/src/core/asm.hpp
@@ -0,0 +1,23 @@
+#pragma once
+
+#define READ_MSR(reg,high,low) \
+ asm volatile( \
+ "mov %2, %%ecx;rdmsr \n\t" \
+ "mov %%edx, %0 \n\t" \
+ "mov %%eax, %1" \
+ : "=m" (high), "=m" (low) :"i" (reg))
+
+#define WRITE_MSR(reg,high,low) \
+ asm volatile( \
+ "mov %1, %%edx \n\t" \
+ "mov %2, %%eax \n\t" \
+ "mov %0, %%ecx;wrmsr"::"i" (reg), "m" (high), "m" (low))
+
+#define outb(port,value) \
+ asm volatile ("outb %%al, %%dx" :: "a"(value), "d" (port) )
+
+#define outbj(port,value) \
+ asm volatile ("outb %%al, %%dx;" :: "a" (value), "d"(port) )
+
+#define inb(port,dst) \
+ asm volatile ("inb %%dx, %%al": "=a" (dst) : "d" (port))