From 97ad772ada4480f710ffafee79b0f9c1f7e3c61d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Sat, 6 Jan 2007 11:51:21 +0000 Subject: [PATCH] * Moved PXE page directory and page tables below the 1 MB limit. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19718 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/boot/platform/bios_ia32/mmu.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/system/boot/platform/bios_ia32/mmu.cpp b/src/system/boot/platform/bios_ia32/mmu.cpp index ebba1e277d..f9ad031c7c 100644 --- a/src/system/boot/platform/bios_ia32/mmu.cpp +++ b/src/system/boot/platform/bios_ia32/mmu.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2004-2005, Axel Dörfler, axeld@pinc-software.de. + * Copyright 2004-2007, Axel Dörfler, axeld@pinc-software.de. * Based on code written by Travis Geiselbrecht for NewOS. * * Distributed under the terms of the MIT License. @@ -27,7 +27,8 @@ * 0x10000 - ? code (up to ~500 kB) * 0x90000 1st temporary page table (identity maps 0-4 MB) * 0x91000 2nd (4-8 MB) - * 0x92000 - 0xa0000 further page tables + * 0x92000 - 0x92000 further page tables + * 0x9e000 - 0xa0000 SMP trampoline code * [0xa0000 - 0x100000 BIOS/ROM/reserved area] * 0x100000 page directory * ... boot loader heap (32 kB) @@ -63,23 +64,22 @@ struct extended_memory { static const uint32 kDefaultPageTableFlags = 0x07; // present, user, R/W static const size_t kMaxKernelSize = 0x100000; // 1 MB for the kernel -static const uint32 kPageTableRegionEnd = 0x110000; // working page directory and page table static uint32 *sPageDirectory = 0; -static addr_t sNextPhysicalAddress = 0x110000; +static addr_t sNextPhysicalAddress = 0x112000; static addr_t sNextVirtualAddress = KERNEL_BASE + kMaxKernelSize; static addr_t sMaxVirtualAddress = KERNEL_BASE + 0x400000; -static addr_t sNextPageTableAddress = 0x100000; +static addr_t sNextPageTableAddress = 0x7d000; +static const uint32 kPageTableRegionEnd = 0x8b000; + // we need to reserve 2 pages for the SMP trampoline code #else static const uint32 kDefaultPageTableFlags = 0x07; // present, user, R/W static const size_t kMaxKernelSize = 0x100000; // 1 MB for the kernel -static const uint32 kPageTableRegionEnd = 0x9e000; - // we need to reserve 2 pages for the SMP trampoline code // working page directory and page table static uint32 *sPageDirectory = 0; @@ -89,6 +89,8 @@ static addr_t sNextVirtualAddress = KERNEL_BASE + kMaxKernelSize; static addr_t sMaxVirtualAddress = KERNEL_BASE + 0x400000; static addr_t sNextPageTableAddress = 0x90000; +static const uint32 kPageTableRegionEnd = 0x9e000; + // we need to reserve 2 pages for the SMP trampoline code #endif