got interrupts working, added sys/{pic,timer,cpu} modules, ready to work on multitasking
git-svn-id: svn://anubis/hos/trunk@69 5b3e749e-e535-0410-8002-a9bb6afbdfca
This commit is contained in:
1 parent
2c5a5d7093
commit
bc7064e92a
21 files changed
+322
-14
No files matched your search
+5
-4
@@ -6,6 +6,7 @@
|
||||
#include "boot/k_early_panic.h"
|
||||
#include "lang/string.h"
|
||||
#include "lang/kio.h"
|
||||
#include "sys/cpu.h"
|
||||
|
||||
#define MM_MAX_MMAP_ENTRIES 64
|
||||
|
||||
@@ -148,10 +149,10 @@ void mm_bootstrap()
|
||||
u32_t gdt_base = mm_early_page_alloc();
|
||||
mm_gdt = (u64_t *) ((u32_t) gdt_base + (u32_t) KERNEL_OFFSET);
|
||||
mm_gdt[0] = 0x0ull;
|
||||
mm_gdt[1] = MAKE_DESCRIPTOR(0, 0xFFFFF, 1, 0, 1, 1);
|
||||
mm_gdt[2] = MAKE_DESCRIPTOR(0, 0xFFFFF, 1, 0, 1, 0);
|
||||
mm_gdtr.length = 3*sizeof(mm_gdt[0]) - 1;
|
||||
mm_gdtr.phys_addr = gdt_base;
|
||||
mm_gdt[1] = MAKE_DESCRIPTOR(0, 0xFFFFF, 1, 0, 1, 1); /* kernel code */
|
||||
mm_gdt[2] = MAKE_DESCRIPTOR(0, 0xFFFFF, 1, 0, 1, 0); /* kernel data */
|
||||
mm_gdtr.limit = 3 * sizeof(mm_gdt[0]) - 1;
|
||||
mm_gdtr.base = gdt_base;
|
||||
|
||||
/* set the page directory base register */
|
||||
set_cr3(page_directory);
|
||||
|
||||
+3
-3
@@ -6,6 +6,9 @@
|
||||
#include "hos_defines.h"
|
||||
#include "multiboot.h"
|
||||
|
||||
#define KERNEL_CODE_SEGMENT 0x08
|
||||
#define KERNEL_DATA_SEGMENT 0x10
|
||||
|
||||
typedef u32_t pagedirectory_entry_t;
|
||||
|
||||
#define NUM_PAGETABLE_ENTRIES (PAGE_SIZE / sizeof(pagedirectory_entry_t))
|
||||
@@ -29,9 +32,6 @@ int mm_map(u32_t virtual_address, u32_t physical_address,
|
||||
u32_t mm_early_page_alloc();
|
||||
u32_t mm_page_alloc();
|
||||
|
||||
#define set_cr3(address) \
|
||||
__asm__ __volatile__ ("movl %0, %%cr3" : : "r" (address));
|
||||
|
||||
/* http://courses.ece.illinois.edu/ece391/references/descriptors.pdf */
|
||||
/* granularity: 0: limit in bytes; 1: limit in pages */
|
||||
/* dpl: 0: system mode; 3: user mode */
|
||||
|
||||
Executable → Regular
File mode changed.
Executable → Regular
File mode changed.
Reference in new issue
Block a user