Move mmio.h to asm/mmio.h
authorJack Miller <jack@codezen.org>
Fri, 25 Mar 2016 18:01:37 +0000 (13:01 -0500)
committerJack Miller <jack@codezen.org>
Fri, 25 Mar 2016 21:59:18 +0000 (16:59 -0500)
include/asm/mmio.h [new file with mode: 0644]
include/mmio.h [deleted file]
kernel/apic.c

diff --git a/include/asm/mmio.h b/include/asm/mmio.h
new file mode 100644 (file)
index 0000000..bcbcfb5
--- /dev/null
@@ -0,0 +1,33 @@
+/* vim: set ts=4 sw=4 sts=4 noet : */
+#pragma once
+
+/* Inline MMIO helpers. These exist because when you're writing MMIO areas, you
+ * need to make sure that the compiler doesn't make assumptions and short cut
+ * or re-order the reads and writes. This is accomplished with the liberal use
+ * of the "volatile" keyword, as well as the "memory" clobber on read.
+ *
+ * Essentially,
+ *
+ *     mmio[offset] = <whatever>;
+ *     tmp = mmio[offset];
+ *
+ * Could be compiled into tmp = <whatever>, instead of actually performing a
+ * read because the compiler thinks it's smart enough to see what you're doing.
+ * Volatile tells it that we know better.
+ *
+ * This code is cribbed from Linux's arch/x86/include/asm/io.h, writel and
+ * readl, basically just expanding the macros into something semi-legible and
+ * changing the calling convention to take an offset.
+ */
+
+static inline void mmio_write(const volatile void *addr, u32 offset, u32 val)
+{
+       asm volatile("movl %0,%1": : "r"(val), "m" (*(volatile u32 *) ((u64) addr + offset)));
+}
+
+static inline u32 mmio_read(const volatile void *addr, u32 offset)
+{
+       u32 ret;
+       asm volatile("movl %1,%0": "=r"(ret) : "m" (*(volatile u32 *) ((u64) addr + offset)) : "memory");
+       return ret;
+}
diff --git a/include/mmio.h b/include/mmio.h
deleted file mode 100644 (file)
index bcbcfb5..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/* vim: set ts=4 sw=4 sts=4 noet : */
-#pragma once
-
-/* Inline MMIO helpers. These exist because when you're writing MMIO areas, you
- * need to make sure that the compiler doesn't make assumptions and short cut
- * or re-order the reads and writes. This is accomplished with the liberal use
- * of the "volatile" keyword, as well as the "memory" clobber on read.
- *
- * Essentially,
- *
- *     mmio[offset] = <whatever>;
- *     tmp = mmio[offset];
- *
- * Could be compiled into tmp = <whatever>, instead of actually performing a
- * read because the compiler thinks it's smart enough to see what you're doing.
- * Volatile tells it that we know better.
- *
- * This code is cribbed from Linux's arch/x86/include/asm/io.h, writel and
- * readl, basically just expanding the macros into something semi-legible and
- * changing the calling convention to take an offset.
- */
-
-static inline void mmio_write(const volatile void *addr, u32 offset, u32 val)
-{
-       asm volatile("movl %0,%1": : "r"(val), "m" (*(volatile u32 *) ((u64) addr + offset)));
-}
-
-static inline u32 mmio_read(const volatile void *addr, u32 offset)
-{
-       u32 ret;
-       asm volatile("movl %1,%0": "=r"(ret) : "m" (*(volatile u32 *) ((u64) addr + offset)) : "memory");
-       return ret;
-}
index 10284ab..da42605 100644 (file)
 #include <vsalloc.h>
 #include <map.h>
 #include <apic.h>
-#include <mmio.h>
 #include <string.h>
 #include <page_alloc.h>
 
 #include <asm/realmode.h>
 #include <asm/barrier.h>
+#include <asm/mmio.h>
 
 #define CPUID_X2APIC   (1 << 21)
 #define CPUID_LAPIC            (1 << 9)