Finish inlining, abolish misc.asm
authorJack Miller <jack@codezen.org>
Fri, 25 Mar 2016 19:22:58 +0000 (14:22 -0500)
committerJack Miller <jack@codezen.org>
Fri, 25 Mar 2016 21:59:18 +0000 (16:59 -0500)
asm/misc.asm [deleted file]
include/apic.h
include/asm/cpuid.h [new file with mode: 0644]
include/asm/misc.h [deleted file]
include/cpuid.h [deleted file]
kernel/apic.c
kernel/cpuid.c
kernel/main.c

diff --git a/asm/misc.asm b/asm/misc.asm
deleted file mode 100644 (file)
index 7b1b051..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-GLOBAL cpuid
-
-cpuid:
-    mov eax, edi
-    cpuid
-    mov [rsi], eax
-    add rsi, 4
-    mov [rsi], ebx
-    add rsi, 4
-    mov [rsi], ecx
-    add rsi, 4
-    mov [rsi], edx
-    ret
-
-GLOBAL disable_pic
-
-disable_pic:
-    mov al, 0xff
-    out 0xa1, al
-    out 0x21, al
-    ret
index b6778ea..db29ba8 100644 (file)
@@ -13,6 +13,13 @@ struct apic {
        void (*wait) (void);
 };
 
+static inline void disable_pic(void)
+{
+       asm volatile ("mov $0xff, %%al \n"
+                                 "out %%al, $0xa1 \n"
+                                 "out %%al, $0x21" : : : "al");
+}
+
 int apic_init(void);
 
 struct apic *apic;
diff --git a/include/asm/cpuid.h b/include/asm/cpuid.h
new file mode 100644 (file)
index 0000000..cccf006
--- /dev/null
@@ -0,0 +1,9 @@
+/* vim: set ts=4 sw=4 sts=4 noet : */
+#pragma once
+
+static inline void cpuid(u32 eax, u32 regs[4])
+{
+    asm volatile("cpuid" : "=a"(regs[0]), "=b"(regs[1]), "=c"(regs[2]), "=d" (regs[3]) : "a"(eax));
+}
+
+int cpuid_init(void);
diff --git a/include/asm/misc.h b/include/asm/misc.h
deleted file mode 100644 (file)
index d50ccd8..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-/* vim: set ts=4 sw=4 sts=4 noet : */
-#pragma once
-
-#include "types.h"
-
-extern void reset_cr3(void);
-
-extern u64 get_cr2(void);
-extern u64 get_cr3(void);
-
-extern void cpuid(u32 eax, u32 *buf);
-
-extern void disable_pic(void);
diff --git a/include/cpuid.h b/include/cpuid.h
deleted file mode 100644 (file)
index fc7700e..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-/* vim: set ts=4 sw=4 sts=4 noet : */
-#pragma once
-
-#include <asm/misc.h>
-
-int cpuid_init(void);
index ee727e5..13593b4 100644 (file)
  * - x2APIC ICR has no busy bit, will accept writes in order
  */
 
-#include <console.h>
-#include <cpuid.h>
-#include <memmap.h>
+#include <kernel.h>
 #include <vsalloc.h>
 #include <map.h>
 #include <apic.h>
-#include <string.h>
-#include <page_alloc.h>
 
+#include <asm/cpuid.h>
 #include <asm/realmode.h>
 #include <asm/barrier.h>
 #include <asm/mmio.h>
index 1a38e32..ef82de1 100644 (file)
@@ -2,7 +2,7 @@
 
 #include <kernel.h>
 
-#include "asm/misc.h"
+#include <asm/cpuid.h>
 
 int cpuid_init(void)
 {
index 9ba875f..d04c940 100644 (file)
@@ -1,14 +1,14 @@
 /* vim: set ts=4 sw=4 sts=4 noet : */
 
-#include <page_alloc.h>
-#include <console.h>
-#include <asm/misc.h>
+#include <kernel.h>
+
 #include <apic.h>
-#include <cpuid.h>
 #include <vga.h>
 #include <acpi.h>
 #include <smp.h>
 
+#include <asm/cpuid.h>
+
 void main (void *info_phys, unsigned long end_structures)
 {
        page_alloc_init(info_phys, end_structures);