/// <summary> /// Initialise the Memory Manager, this should not be called anymore since it is done very early during the boot process. /// </summary> public static unsafe void Init() { if (StartedMemoryManager) { return; } StartedMemoryManager = true; var largestBlock = CPU.GetLargestMemoryBlock(); if (largestBlock != null) { memPtr = (byte *)largestBlock->Address; memLength = largestBlock->Length; if ((uint)memPtr < CPU.GetEndOfKernel() + 1024) { memPtr = (byte *)CPU.GetEndOfKernel() + 1024; memPtr += RAT.PageSize - (uint)memPtr % RAT.PageSize; memLength = largestBlock->Length - ((uint)memPtr - (uint)largestBlock->Address); memLength += RAT.PageSize - memLength % RAT.PageSize; } } else { memPtr = (byte *)CPU.GetEndOfKernel() + 1024; memPtr += RAT.PageSize - (uint)memPtr % RAT.PageSize; memLength = (128 * 1024 * 1024); } RAT.Init(memPtr, (uint)memLength); }