From dc6fd148fcf87054451c44f3fb4be07012eccd0a Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 23 Apr 2023 06:28:12 +0300 Subject: [PATCH] Reserve more pages for SMP trampoline --- Architecture/amd64/cpu/SymmetricMultiprocessing.cpp | 1 + Core/Memory/PhysicalMemoryManager.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Architecture/amd64/cpu/SymmetricMultiprocessing.cpp b/Architecture/amd64/cpu/SymmetricMultiprocessing.cpp index 94dc157..fce30d2 100644 --- a/Architecture/amd64/cpu/SymmetricMultiprocessing.cpp +++ b/Architecture/amd64/cpu/SymmetricMultiprocessing.cpp @@ -103,6 +103,7 @@ namespace SMP /* We reserved the TRAMPOLINE_START address inside Physical class. */ Memory::Virtual().Map((void *)TRAMPOLINE_START, (void *)TRAMPOLINE_START, TrampolineLength, Memory::PTFlag::RW); memcpy((void *)TRAMPOLINE_START, &_trampoline_start, TrampolineLength); + debug("Trampoline address: %#lx-%#lx", TRAMPOLINE_START, TRAMPOLINE_START + TrampolineLength); void *CPUTmpStack = KernelAllocator.RequestPages(TO_PAGES(STACK_SIZE + 1)); asmv("sgdt [0x580]\n" diff --git a/Core/Memory/PhysicalMemoryManager.cpp b/Core/Memory/PhysicalMemoryManager.cpp index 3223647..df6dda3 100644 --- a/Core/Memory/PhysicalMemoryManager.cpp +++ b/Core/Memory/PhysicalMemoryManager.cpp @@ -430,7 +430,7 @@ namespace Memory debug("Reserving pages for SMP..."); this->ReservePage((void *)0x0); /* Trampoline stack, gdt, idt, etc... */ - this->ReservePage((void *)0x2000); /* TRAMPOLINE_START */ + this->ReservePages((void *)0x2000, 4); /* TRAMPOLINE_START */ debug("Reserving bitmap pages..."); this->ReservePages(PageBitmap.Buffer, TO_PAGES(PageBitmap.Size));