diff options
| author | Jon Santmyer <jon@jonsantmyer.com> | 2026-10-07 17:37:26 -0400 |
|---|---|---|
| committer | Jon Santmyer <jon@jonsantmyer.com> | 2026-10-07 17:37:26 -0400 |
| commit | 434ddcd907832b1febc7d70e4faa52109c7eb3bd (patch) | |
| tree | 00c1ade91f9806d831f10e6006732b294e73f613 /arch/x86_64 | |
| parent | 8d48bbd9746228b63bafa5f92b621998d7d8f3d3 (diff) | |
| download | jove-kernel-434ddcd907832b1febc7d70e4faa52109c7eb3bd.tar.gz jove-kernel-434ddcd907832b1febc7d70e4faa52109c7eb3bd.tar.bz2 jove-kernel-434ddcd907832b1febc7d70e4faa52109c7eb3bd.zip | |
add memory region object for better memory managment
Diffstat (limited to 'arch/x86_64')
| -rw-r--r-- | arch/x86_64/hal/obj.c | 2 | ||||
| -rw-r--r-- | arch/x86_64/hal/paging.c | 8 | ||||
| -rw-r--r-- | arch/x86_64/lock.c | 25 | ||||
| -rw-r--r-- | arch/x86_64/lock.h | 11 | ||||
| -rw-r--r-- | arch/x86_64/main.c | 3 |
5 files changed, 10 insertions, 39 deletions
diff --git a/arch/x86_64/hal/obj.c b/arch/x86_64/hal/obj.c index 75cb0c0..110351c 100644 --- a/arch/x86_64/hal/obj.c +++ b/arch/x86_64/hal/obj.c @@ -1,5 +1,5 @@ #include "obj.h" -#include "arch/x86_64/lock.h" +#include "sys/lock.h" #include "lib/printf.h" #include "paging.h" #include "hal/obj.h" diff --git a/arch/x86_64/hal/paging.c b/arch/x86_64/hal/paging.c index a0d6ca9..1587c62 100644 --- a/arch/x86_64/hal/paging.c +++ b/arch/x86_64/hal/paging.c @@ -28,6 +28,14 @@ phys_tovirt(uintptr_t phys) return (void*)(phys | IDENT_VIRT_BASE); } +physaddr_t +phys_fromvirt(virtaddr_t virt) +{ + if(virt < IDENT_VIRT_BASE) return 0; + if(virt > KERNEL_VIRT_BASE) return KPTR_TOPHYS(virt); + return virt & ~IDENT_VIRT_BASE; +} + uintptr_t paging_get_pml4(void) { diff --git a/arch/x86_64/lock.c b/arch/x86_64/lock.c deleted file mode 100644 index a34cee6..0000000 --- a/arch/x86_64/lock.c +++ /dev/null @@ -1,25 +0,0 @@ -#include "lock.h" - -extern int _kernel_panic_unlock; - -void -take_mutex(atomic_flag *lock) -{ - if(_kernel_panic_unlock) return; - while(atomic_flag_test_and_set(lock)) { - __builtin_ia32_pause(); - } -} - -int -try_take_mutex(atomic_flag *lock) -{ - if(_kernel_panic_unlock) return 1; - return atomic_flag_test_and_set(lock); -} - -void -release_mutex(atomic_flag *lock) -{ - atomic_flag_clear(lock); -} diff --git a/arch/x86_64/lock.h b/arch/x86_64/lock.h deleted file mode 100644 index 3592ea1..0000000 --- a/arch/x86_64/lock.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef _JOVE_x86_64_LOCK_H -#define _JOVE_x86_64_LOCK_H 1 - -#include <stdatomic.h> - -void take_mutex(atomic_flag *lock); -int try_take_mutex(atomic_flag *lock); - -void release_mutex(atomic_flag *lock); - -#endif diff --git a/arch/x86_64/main.c b/arch/x86_64/main.c index 92f9fe1..6e2fcb8 100644 --- a/arch/x86_64/main.c +++ b/arch/x86_64/main.c @@ -38,6 +38,7 @@ kernel_entry(void) serial_com_init(); smp_init_bsp(); + mem_setup_regions(); initrd_setup(); fb_init(); @@ -45,8 +46,6 @@ kernel_entry(void) cmdline_print(); - mem_setup_untyped(); - extern void processing_setup(void*); processing_setup(kernel_process_entry); hcf(); |
