diff --git a/README.md b/README.md index 6928242..73f84a3 100755 --- a/README.md +++ b/README.md @@ -6,13 +6,18 @@ The Soaplin kernel is a new Unix-like operating system kernel. * Memory management (VMM/PMM) * Simple pre-emptive scheduler * Ring 3 (user mode) support +* ELF loader + +## In the works +* Virtual File System +* FPU support ## To come * RTC support -* ELF loader -* Virtual File System * EXT2 driver * FAT32 driver * CPIO-based init ram disk * Video driver for Bochs graphics adapter, and the VMware display adapter. -* FPU support + +## Known bugs +* If a user process calls the syscall handler by using interrupts, the system may crash due to a Page Fault. \ No newline at end of file diff --git a/kernel/src/mm/vmm.c b/kernel/src/mm/vmm.c index f12dd47..e2a183f 100644 --- a/kernel/src/mm/vmm.c +++ b/kernel/src/mm/vmm.c @@ -29,21 +29,6 @@ pagemap_t *vmm_alloc_pm() { pagemap_t *pm = (pagemap_t *)HIGHER_HALF((uint64_t)pmm_request_page()); memset(pm, 0, PMM_PAGE_SIZE); - /*if (vmm_kernel_pm_exists) { - pm->toplevel = (uint64_t*)HIGHER_HALF((uint64_t)pmm_request_page()); - memset(pm->toplevel, 0, PMM_PAGE_SIZE); - - for (int i = 256; i < 512; i++) { - pm->toplevel[i] = vmm_kernel_pm->toplevel[i]; - } - } else { - - __asm__ volatile("mov %%cr3, %0" : "=r"(pm->toplevel) : : "memory"); - pm->toplevel = HIGHER_HALF(pm->toplevel); - logln(info, "vmm", "Limine-provided kernel PML4: %p", pm->toplevel); - - }*/ - pm->toplevel = (uint64_t *)HIGHER_HALF((uint64_t)pmm_request_page()); memset(pm->toplevel, 0, PMM_PAGE_SIZE); diff --git a/kernel/src/sys/arch/x86_64/interrupts.c b/kernel/src/sys/arch/x86_64/interrupts.c index bbec1c2..8e3643c 100644 --- a/kernel/src/sys/arch/x86_64/interrupts.c +++ b/kernel/src/sys/arch/x86_64/interrupts.c @@ -74,5 +74,6 @@ void exception_handler(registers_t *regs) { syscall_handle(regs); } // logln(info, "arch/ints", "Received interrupt %d\n", regs->int_no); + //vmm_load_pagemap(curr_proc->pm); pic_ack(regs->int_no - 32); } \ No newline at end of file diff --git a/testing/sk-hello.elf b/testing/sk-hello.elf index 02ba99c..b36d9a6 100755 Binary files a/testing/sk-hello.elf and b/testing/sk-hello.elf differ diff --git a/testing/test.asm b/testing/test.asm index a40f2e3..14e2f8a 100644 --- a/testing/test.asm +++ b/testing/test.asm @@ -3,12 +3,7 @@ section .text global _start _start: - int 0x80 - int 0x80 - int 0x80 - int 0x80 - int 0x80 - int 0x80 - int 0x80 + mov rax, 10 .hey: + add rax, 1 jmp .hey \ No newline at end of file diff --git a/testing/test.o b/testing/test.o index dac71eb..b3d93e1 100644 Binary files a/testing/test.o and b/testing/test.o differ