From 3bbc916ffd9c0d093a39c2ddb01662cdb7a127a1 Mon Sep 17 00:00:00 2001 From: RaphProductions <81994075+RaphProductions@users.noreply.github.com> Date: Sun, 11 May 2025 18:37:15 +0200 Subject: [PATCH] kernel: Prepare for v0.1-pre --- README.md | 11 ++++++++--- kernel/src/mm/vmm.c | 15 --------------- kernel/src/sys/arch/x86_64/interrupts.c | 1 + testing/sk-hello.elf | Bin 4328 -> 4320 bytes testing/test.asm | 9 ++------- testing/test.o | Bin 608 -> 608 bytes 6 files changed, 11 insertions(+), 25 deletions(-) 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 02ba99caf270dae56247ab78c51cb06771516d74..b36d9a6f1dee0312bd55559d73aa3cdf9027b654 100755 GIT binary patch delta 64 zcmaE%_&{-j2BX46O><6e1_?NzWy~?Kp=E-hJXSi O_vB6ib0B$8Kpg-sOA)33 delta 62 zcmaE$_(E}l2BXGAO><5G1_%(?m^qza;A{gjeEn}Sw?OFRSOH~5fys>m=0I|%fI0x4 C2o?YU 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 dac71eb80f2bb401d39a484d2fae2ae1c220ac27..b3d93e1cf35a65bd8d7394cf6a0004acfc464938 100644 GIT binary patch delta 38 tcmaFB@_=Q+0!HqM3-1f;;9_84@Mu23`1%)+!N4$i0%HRs>tsPDe*g