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:
josh committed 2009-07-29 22:30:52 +00:00
1 parent 2c5a5d7093
commit bc7064e92a
21 files changed
+322 -14

No files matched your search

+5 -4
View File
@@ -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
View File
@@ -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
View File
File mode changed.
Executable → Regular
View File
File mode changed.