diff options
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 |