memory: Kernel threads require more memory for stack

Threads will now use 128 KiB
This commit is contained in:
EnderIce2 2024-11-18 03:27:06 +02:00
parent 86a119ea51
commit 23301b8c1b
Signed by untrusted user who does not match committer: enderice2
GPG Key ID: EACC3AD603BAB4DD
2 changed files with 13 additions and 12 deletions

View File

@ -128,16 +128,16 @@ namespace Memory
} }
else else
{ {
Memory::KernelStackManager::StackAllocation sa = StackManager.DetailedAllocate(STACK_SIZE); Memory::KernelStackManager::StackAllocation sa = StackManager.DetailedAllocate(LARGE_STACK_SIZE);
this->StackBottom = sa.VirtualAddress; this->StackBottom = sa.VirtualAddress;
this->StackTop = (void *)((uintptr_t)this->StackBottom + STACK_SIZE); this->StackTop = (void *)((uintptr_t)this->StackBottom + LARGE_STACK_SIZE);
this->StackPhysicalBottom = sa.PhysicalAddress; this->StackPhysicalBottom = sa.PhysicalAddress;
this->StackPhysicalTop = (void *)((uintptr_t)this->StackPhysicalBottom + STACK_SIZE); this->StackPhysicalTop = (void *)((uintptr_t)this->StackPhysicalBottom + LARGE_STACK_SIZE);
this->Size = STACK_SIZE; this->Size = LARGE_STACK_SIZE;
debug("StackBottom: %#lx", this->StackBottom); debug("StackBottom: %#lx", this->StackBottom);
for (size_t i = 0; i < TO_PAGES(STACK_SIZE); i++) for (size_t i = 0; i < TO_PAGES(LARGE_STACK_SIZE); i++)
{ {
AllocatedPages pa = { AllocatedPages pa = {
.PhysicalAddress = (void *)((uintptr_t)this->StackPhysicalBottom + (i * PAGE_SIZE)), .PhysicalAddress = (void *)((uintptr_t)this->StackPhysicalBottom + (i * PAGE_SIZE)),

View File

@ -39,8 +39,9 @@
#define PAGE_SIZE_4M 0x400000 /* 4 MiB */ #define PAGE_SIZE_4M 0x400000 /* 4 MiB */
#define PAGE_SIZE_1G 0x40000000 /* 1 GiB */ #define PAGE_SIZE_1G 0x40000000 /* 1 GiB */
#define STACK_SIZE 0x4000 /* 16 KiB */ #define STACK_SIZE 0x4000 /* 16 KiB */
#define USER_STACK_SIZE 0x2000 /* 8 KiB */ #define LARGE_STACK_SIZE 0x20000 /* 128 KiB */
#define USER_STACK_SIZE 0x2000 /* 8 KiB */
/* To pages */ /* To pages */
#define TO_PAGES(d) (((d) + PAGE_SIZE - 1) / PAGE_SIZE) #define TO_PAGES(d) (((d) + PAGE_SIZE - 1) / PAGE_SIZE)
@ -50,14 +51,14 @@
#if defined(a64) || defined(aa64) #if defined(a64) || defined(aa64)
#define KERNEL_VMA_OFFSET 0xFFFFFFFF80000000 #define KERNEL_VMA_OFFSET 0xFFFFFFFF80000000
#define USER_ALLOC_BASE 0xFFFFA00000000000 /* 256 GiB */ #define USER_ALLOC_BASE 0xFFFFA00000000000 /* 256 GiB */
#define USER_ALLOC_END 0xFFFFB00000000000 #define USER_ALLOC_END 0xFFFFB00000000000
#define KERNEL_STACK_BASE 0xFFFFB00000000000 /* 256 GiB */ #define KERNEL_STACK_BASE 0xFFFFB00000000000 /* 256 GiB */
#define KERNEL_STACK_END 0xFFFFC00000000000 #define KERNEL_STACK_END 0xFFFFC00000000000
#define USER_STACK_END 0xFFFFEFFF00000000 /* 256 MiB */ #define USER_STACK_END 0xFFFFEFFF00000000 /* 256 MiB */
#define USER_STACK_BASE 0xFFFFEFFFFFFF0000 #define USER_STACK_BASE 0xFFFFEFFFFFFF0000
#elif defined(a32) #elif defined(a32)
#define KERNEL_VMA_OFFSET 0xC0000000 #define KERNEL_VMA_OFFSET 0xC0000000