mirror of
https://github.com/Mathewnd/Astral.git
synced 2026-10-27 12:48:22 +00:00
mmu: rename ARCH_MMU_FLAG_* to ARCH_MMU_FLAGS_*
This commit is contained in:
@@ -12,7 +12,7 @@
|
||||
#define PDPTMASK (uint64_t)0b111111111000000000000000000000000000000
|
||||
#define PML4MASK (uint64_t)0b111111111000000000000000000000000000000000000000
|
||||
|
||||
#define INTERMEDIATE_FLAGS ARCH_MMU_FLAG_WRITE | ARCH_MMU_FLAG_READ | ARCH_MMU_FLAG_USER
|
||||
#define INTERMEDIATE_FLAGS ARCH_MMU_FLAGS_WRITE | ARCH_MMU_FLAGS_READ | ARCH_MMU_FLAGS_USER
|
||||
|
||||
// returns hhdm address of next entry
|
||||
|
||||
@@ -176,9 +176,9 @@ static void *kerneladdr[6] = {
|
||||
};
|
||||
|
||||
static mmuflags_t kernelflags[3] = {
|
||||
ARCH_MMU_FLAG_READ,
|
||||
ARCH_MMU_FLAG_READ | ARCH_MMU_FLAG_WRITE | ARCH_MMU_FLAG_NOEXEC,
|
||||
ARCH_MMU_FLAG_READ | ARCH_MMU_FLAG_NOEXEC
|
||||
ARCH_MMU_FLAGS_READ,
|
||||
ARCH_MMU_FLAGS_READ | ARCH_MMU_FLAGS_WRITE | ARCH_MMU_FLAGS_NOEXEC,
|
||||
ARCH_MMU_FLAGS_READ | ARCH_MMU_FLAGS_NOEXEC
|
||||
};
|
||||
|
||||
extern volatile struct limine_memmap_request pmm_liminemap;
|
||||
@@ -225,7 +225,7 @@ void arch_mmu_init() {
|
||||
for (size_t i = 0; i < pmm_liminemap.response->entry_count; ++i) {
|
||||
struct limine_memmap_entry *e = pmm_liminemap.response->entries[i];
|
||||
for (uint64_t i = 0; i < e->length; i += PAGE_SIZE) {
|
||||
uint64_t entry = ((e->base + i) & ADDRMASK) | ARCH_MMU_FLAG_READ | ARCH_MMU_FLAG_WRITE | ARCH_MMU_FLAG_NOEXEC;
|
||||
uint64_t entry = ((e->base + i) & ADDRMASK) | ARCH_MMU_FLAGS_READ | ARCH_MMU_FLAGS_WRITE | ARCH_MMU_FLAGS_NOEXEC;
|
||||
__assert(add_page(FROM_HHDM(template), MAKE_HHDM((void *)(e->base + i)), entry, 0));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,10 +11,10 @@
|
||||
#define USERSPACE_END (void *)0x00007fffffffffff
|
||||
|
||||
#define PAGE_SIZE 4096
|
||||
#define ARCH_MMU_FLAG_READ (uint64_t)1
|
||||
#define ARCH_MMU_FLAG_WRITE (uint64_t)2
|
||||
#define ARCH_MMU_FLAG_USER (uint64_t)4
|
||||
#define ARCH_MMU_FLAG_NOEXEC ((uint64_t)1 << 63)
|
||||
#define ARCH_MMU_FLAGS_READ (uint64_t)1
|
||||
#define ARCH_MMU_FLAGS_WRITE (uint64_t)2
|
||||
#define ARCH_MMU_FLAGS_USER (uint64_t)4
|
||||
#define ARCH_MMU_FLAGS_NOEXEC ((uint64_t)1 << 63)
|
||||
|
||||
typedef uint64_t mmuflags_t;
|
||||
typedef uint64_t * pagetableptr_t; // physical address
|
||||
|
||||
@@ -50,7 +50,7 @@ static void initindirect(scache_t *cache, slab_t *slab, void **base, void *objba
|
||||
}
|
||||
|
||||
static bool growcache(scache_t *cache) {
|
||||
void *_slab = vmm_map(NULL, PAGE_SIZE, VMM_FLAGS_ALLOCATE, ARCH_MMU_FLAG_READ | ARCH_MMU_FLAG_WRITE | ARCH_MMU_FLAG_NOEXEC, NULL);
|
||||
void *_slab = vmm_map(NULL, PAGE_SIZE, VMM_FLAGS_ALLOCATE, ARCH_MMU_FLAGS_READ | ARCH_MMU_FLAGS_WRITE | ARCH_MMU_FLAGS_NOEXEC, NULL);
|
||||
if (_slab == NULL)
|
||||
return false;
|
||||
slab_t *slab = GET_SLAB(_slab);
|
||||
@@ -58,7 +58,7 @@ static bool growcache(scache_t *cache) {
|
||||
if (cache->size < SLAB_INDIRECT_CUTOFF) {
|
||||
initdirect(cache, slab, _slab);
|
||||
} else {
|
||||
void *base = vmm_map(NULL, cache->slabobjcount * cache->truesize, VMM_FLAGS_ALLOCATE, ARCH_MMU_FLAG_READ | ARCH_MMU_FLAG_WRITE | ARCH_MMU_FLAG_NOEXEC, NULL);
|
||||
void *base = vmm_map(NULL, cache->slabobjcount * cache->truesize, VMM_FLAGS_ALLOCATE, ARCH_MMU_FLAGS_READ | ARCH_MMU_FLAGS_WRITE | ARCH_MMU_FLAGS_NOEXEC, NULL);
|
||||
if (base == NULL) {
|
||||
vmm_unmap(_slab, PAGE_SIZE, 0);
|
||||
return false;
|
||||
|
||||
+7
-7
@@ -245,13 +245,13 @@ bool vmm_pagefault(void *addr, bool user, int actions) {
|
||||
|
||||
int invalidactions = 0;
|
||||
|
||||
if ((range->mmuflags & ARCH_MMU_FLAG_READ) == 0)
|
||||
if ((range->mmuflags & ARCH_MMU_FLAGS_READ) == 0)
|
||||
invalidactions |= VMM_ACTION_READ;
|
||||
|
||||
if ((range->mmuflags & ARCH_MMU_FLAG_WRITE) == 0)
|
||||
if ((range->mmuflags & ARCH_MMU_FLAGS_WRITE) == 0)
|
||||
invalidactions |= VMM_ACTION_WRITE;
|
||||
|
||||
if ((range->mmuflags & ARCH_MMU_FLAG_NOEXEC))
|
||||
if ((range->mmuflags & ARCH_MMU_FLAGS_NOEXEC))
|
||||
invalidactions |= VMM_ACTION_EXEC;
|
||||
|
||||
if (invalidactions & actions)
|
||||
@@ -411,12 +411,12 @@ void vmm_init() {
|
||||
|
||||
for (uint64_t i = 0; i < pmm_liminemap.response->entry_count; ++i) {
|
||||
struct limine_memmap_entry *e = pmm_liminemap.response->entries[i];
|
||||
__assert(vmm_map(MAKE_HHDM(e->base), e->length, 0, ARCH_MMU_FLAG_READ | ARCH_MMU_FLAG_WRITE | ARCH_MMU_FLAG_NOEXEC, NULL));
|
||||
__assert(vmm_map(MAKE_HHDM(e->base), e->length, 0, ARCH_MMU_FLAGS_READ | ARCH_MMU_FLAGS_WRITE | ARCH_MMU_FLAGS_NOEXEC, NULL));
|
||||
}
|
||||
|
||||
__assert(vmm_map(&_text_start, (uintptr_t)&_text_end - (uintptr_t)&_text_start, 0, ARCH_MMU_FLAG_READ, NULL));
|
||||
__assert(vmm_map(&_rodata_start, (uintptr_t)&_rodata_end - (uintptr_t)&_rodata_start, 0, ARCH_MMU_FLAG_READ | ARCH_MMU_FLAG_NOEXEC, NULL));
|
||||
__assert(vmm_map(&_data_start, (uintptr_t)&_data_end - (uintptr_t)&_data_start, 0, ARCH_MMU_FLAG_READ | ARCH_MMU_FLAG_WRITE | ARCH_MMU_FLAG_NOEXEC, NULL));
|
||||
__assert(vmm_map(&_text_start, (uintptr_t)&_text_end - (uintptr_t)&_text_start, 0, ARCH_MMU_FLAGS_READ, NULL));
|
||||
__assert(vmm_map(&_rodata_start, (uintptr_t)&_rodata_end - (uintptr_t)&_rodata_start, 0, ARCH_MMU_FLAGS_READ | ARCH_MMU_FLAGS_NOEXEC, NULL));
|
||||
__assert(vmm_map(&_data_start, (uintptr_t)&_data_end - (uintptr_t)&_data_start, 0, ARCH_MMU_FLAGS_READ | ARCH_MMU_FLAGS_WRITE | ARCH_MMU_FLAGS_NOEXEC, NULL));
|
||||
|
||||
printspace(&kernelspace);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user