summaryrefslogtreecommitdiff
path: root/kernel/arch/x86/include
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--kernel/arch/x86/include/kernel/asm.h (renamed from arch/i386/include/kernel/asm.h)15
-rw-r--r--kernel/arch/x86/include/kernel/gdt.h (renamed from arch/i386/include/kernel/gdt.h)2
-rw-r--r--kernel/arch/x86/include/kernel/idt.h (renamed from arch/i386/include/kernel/idt.h)0
-rw-r--r--kernel/arch/x86/include/kernel/paging.h (renamed from arch/i386/include/kernel/paging.h)1
-rw-r--r--kernel/arch/x86/include/kernel/pic.h (renamed from arch/i386/include/kernel/pic.h)0
-rw-r--r--kernel/arch/x86/include/kernel/pmem.h (renamed from arch/i386/include/kernel/pmem.h)4
-rw-r--r--kernel/arch/x86/include/kernel/syscall.h (renamed from arch/i386/include/kernel/syscall.h)0
-rw-r--r--kernel/arch/x86/include/kernel/timer.h (renamed from arch/i386/include/kernel/timer.h)0
-rw-r--r--kernel/arch/x86/include/kernel/vmem.h (renamed from arch/i386/include/kernel/vmem.h)0
9 files changed, 16 insertions, 6 deletions
diff --git a/arch/i386/include/kernel/asm.h b/kernel/arch/x86/include/kernel/asm.h
index cc570c5..18f53c4 100644
--- a/arch/i386/include/kernel/asm.h
+++ b/kernel/arch/x86/include/kernel/asm.h
@@ -3,6 +3,7 @@
#include <kernel/gdt.h>
#include <stdint.h>
+#include <cpuid.h>
#define PCI_CONFIG_ADDR 0xCF8
#define PCI_CONFIG_DATA 0xCFC
@@ -47,6 +48,12 @@ struct isr_frame {
uint32_t eflags;
} __attribute__((packed));
+struct cpuid_info {
+ char vendorID[12];
+ uint32_t feat_ecx;
+ uint32_t feat_edx;
+};
+
void isr_stub_0(void);
void isr_stub_1(void);
void isr_stub_2(void);
@@ -99,12 +106,14 @@ void irq_stub_15(void);
void isr_stub_128(void);
-void aquire_lock(int *lock);
-void release_lock(int *lock);
-
void enable_paging(uint32_t new_cr3);
+int cpuid_check(void);
void flush_gdt(void);
+static inline void cpuid(int code, uint32_t *ecx, uint32_t *ebx) {
+ __asm__ volatile("cpuid" : "=a"(*ecx), "=d"(*ebx) : "a"(code) : "ecx","ebx");
+}
+
static inline void outb(uint16_t port, uint8_t value) {
__asm__ volatile("outb %0, %1" : : "a"(value), "Nd"(port));
}
diff --git a/arch/i386/include/kernel/gdt.h b/kernel/arch/x86/include/kernel/gdt.h
index ec02719..aa05408 100644
--- a/arch/i386/include/kernel/gdt.h
+++ b/kernel/arch/x86/include/kernel/gdt.h
@@ -14,7 +14,7 @@ struct gdt_entry {
struct gdt_ptr {
uint16_t limit;
- uint32_t base;
+ uint64_t base;
} __attribute__((packed));
struct tss_entry {
diff --git a/arch/i386/include/kernel/idt.h b/kernel/arch/x86/include/kernel/idt.h
index 29ec39f..29ec39f 100644
--- a/arch/i386/include/kernel/idt.h
+++ b/kernel/arch/x86/include/kernel/idt.h
diff --git a/arch/i386/include/kernel/paging.h b/kernel/arch/x86/include/kernel/paging.h
index d8bb8f3..3a3c298 100644
--- a/arch/i386/include/kernel/paging.h
+++ b/kernel/arch/x86/include/kernel/paging.h
@@ -2,7 +2,6 @@
#define I386_PAGING_H
#include <kernel/asm.h>
-#include <kernel/multiboot.h>
#include <stdint.h>
#define PAGE_SIZE 4096
diff --git a/arch/i386/include/kernel/pic.h b/kernel/arch/x86/include/kernel/pic.h
index 187d553..187d553 100644
--- a/arch/i386/include/kernel/pic.h
+++ b/kernel/arch/x86/include/kernel/pic.h
diff --git a/arch/i386/include/kernel/pmem.h b/kernel/arch/x86/include/kernel/pmem.h
index e6e4f57..ea4fe29 100644
--- a/arch/i386/include/kernel/pmem.h
+++ b/kernel/arch/x86/include/kernel/pmem.h
@@ -1,7 +1,6 @@
#ifndef I386_PMEM_H
#define I386_PMEM_H
-#include <kernel/multiboot.h>
#include <stdint.h>
#include <stddef.h>
@@ -11,6 +10,9 @@ struct pfa_page {
void pfa_init(struct mboot_info *header);
+uintptr_t pfa_alloc_dma(size_t num_pages);
+uintptr_t pfa_alloc(size_t num_pages);
+
void pfa_free_dma(uintptr_t paddr, size_t num_pages);
void pfa_free(uintptr_t paddr, size_t num_pages);
diff --git a/arch/i386/include/kernel/syscall.h b/kernel/arch/x86/include/kernel/syscall.h
index a657527..a657527 100644
--- a/arch/i386/include/kernel/syscall.h
+++ b/kernel/arch/x86/include/kernel/syscall.h
diff --git a/arch/i386/include/kernel/timer.h b/kernel/arch/x86/include/kernel/timer.h
index c0b3a73..c0b3a73 100644
--- a/arch/i386/include/kernel/timer.h
+++ b/kernel/arch/x86/include/kernel/timer.h
diff --git a/arch/i386/include/kernel/vmem.h b/kernel/arch/x86/include/kernel/vmem.h
index 94aa32d..94aa32d 100644
--- a/arch/i386/include/kernel/vmem.h
+++ b/kernel/arch/x86/include/kernel/vmem.h