bootloader: ARM: Replace KERNEL_BASE with KERNEL_LOAD_BASE
This commit is contained in:
@@ -51,7 +51,7 @@ TODO:
|
|||||||
0xa2000000 - ? code (up to 1MB)
|
0xa2000000 - ? code (up to 1MB)
|
||||||
0xa2100000 boot loader heap / free physical memory
|
0xa2100000 boot loader heap / free physical memory
|
||||||
|
|
||||||
The kernel is mapped at KERNEL_BASE, all other stuff mapped by the
|
The kernel is mapped at KERNEL_LOAD_BASE, all other stuff mapped by the
|
||||||
loader (kernel args, modules, driver settings, ...) comes after
|
loader (kernel args, modules, driver settings, ...) comes after
|
||||||
0x80020000 which means that there is currently only 2 MB reserved for
|
0x80020000 which means that there is currently only 2 MB reserved for
|
||||||
the kernel itself (see kMaxKernelSize).
|
the kernel itself (see kMaxKernelSize).
|
||||||
@@ -127,7 +127,7 @@ static struct memblock LOADER_MEMORYMAP[] = {
|
|||||||
static const size_t kMaxKernelSize = 0x200000; // 2 MB for the kernel
|
static const size_t kMaxKernelSize = 0x200000; // 2 MB for the kernel
|
||||||
|
|
||||||
static addr_t sNextPhysicalAddress = 0; //will be set by mmu_init
|
static addr_t sNextPhysicalAddress = 0; //will be set by mmu_init
|
||||||
static addr_t sNextVirtualAddress = KERNEL_BASE + kMaxKernelSize;
|
static addr_t sNextVirtualAddress = KERNEL_LOAD_BASE + kMaxKernelSize;
|
||||||
|
|
||||||
static addr_t sNextPageTableAddress = 0;
|
static addr_t sNextPageTableAddress = 0;
|
||||||
//the page directory is in front of the pagetable
|
//the page directory is in front of the pagetable
|
||||||
@@ -391,7 +391,7 @@ map_page(addr_t virtualAddress, addr_t physicalAddress, uint32 flags)
|
|||||||
TRACE(("map_page: vaddr 0x%lx, paddr 0x%lx\n", virtualAddress,
|
TRACE(("map_page: vaddr 0x%lx, paddr 0x%lx\n", virtualAddress,
|
||||||
physicalAddress));
|
physicalAddress));
|
||||||
|
|
||||||
if (virtualAddress < KERNEL_BASE) {
|
if (virtualAddress < KERNEL_LOAD_BASE) {
|
||||||
panic("map_page: asked to map invalid page %p!\n",
|
panic("map_page: asked to map invalid page %p!\n",
|
||||||
(void *)virtualAddress);
|
(void *)virtualAddress);
|
||||||
}
|
}
|
||||||
@@ -440,7 +440,7 @@ unmap_page(addr_t virtualAddress)
|
|||||||
{
|
{
|
||||||
TRACE(("unmap_page(virtualAddress = %p)\n", (void *)virtualAddress));
|
TRACE(("unmap_page(virtualAddress = %p)\n", (void *)virtualAddress));
|
||||||
|
|
||||||
if (virtualAddress < KERNEL_BASE) {
|
if (virtualAddress < KERNEL_LOAD_BASE) {
|
||||||
panic("unmap_page: asked to unmap invalid page %p!\n",
|
panic("unmap_page: asked to unmap invalid page %p!\n",
|
||||||
(void *)virtualAddress);
|
(void *)virtualAddress);
|
||||||
}
|
}
|
||||||
@@ -474,12 +474,13 @@ mmu_allocate(void *virtualAddress, size_t size)
|
|||||||
addr_t address = (addr_t)virtualAddress;
|
addr_t address = (addr_t)virtualAddress;
|
||||||
|
|
||||||
// is the address within the valid range?
|
// is the address within the valid range?
|
||||||
if (address < KERNEL_BASE || address + size * B_PAGE_SIZE
|
if (address < KERNEL_LOAD_BASE || address + size * B_PAGE_SIZE
|
||||||
>= KERNEL_BASE + kMaxKernelSize) {
|
>= KERNEL_LOAD_BASE + kMaxKernelSize) {
|
||||||
TRACE(("mmu_allocate in illegal range\n address: %" B_PRIx32
|
TRACE(("mmu_allocate in illegal range\n address: %" B_PRIx32
|
||||||
" KERNELBASE: %" B_PRIx32 " KERNEL_BASE + kMaxKernelSize: %"
|
" KERNELBASE: %" B_PRIx32 " KERNEL_LOAD_BASE + kMaxKernelSize:"
|
||||||
B_PRIx32 " address + size : %" B_PRIx32 "\n", (uint32)address,
|
" %" B_PRIx32 " address + size : %" B_PRIx32 "\n",
|
||||||
(uint32)KERNEL_BASE, (uint32)KERNEL_BASE + kMaxKernelSize,
|
(uint32)address, (uint32)KERNEL_LOAD_BASE,
|
||||||
|
(uint32)KERNEL_LOAD_BASE + kMaxKernelSize,
|
||||||
(uint32)(address + size)));
|
(uint32)(address + size)));
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@@ -551,9 +552,9 @@ mmu_init_for_kernel(void)
|
|||||||
|
|
||||||
// Save the memory we've virtually allocated (for the kernel and other
|
// Save the memory we've virtually allocated (for the kernel and other
|
||||||
// stuff)
|
// stuff)
|
||||||
gKernelArgs.virtual_allocated_range[0].start = KERNEL_BASE;
|
gKernelArgs.virtual_allocated_range[0].start = KERNEL_LOAD_BASE;
|
||||||
gKernelArgs.virtual_allocated_range[0].size
|
gKernelArgs.virtual_allocated_range[0].size
|
||||||
= sNextVirtualAddress - KERNEL_BASE;
|
= sNextVirtualAddress - KERNEL_LOAD_BASE;
|
||||||
gKernelArgs.num_virtual_allocated_ranges = 1;
|
gKernelArgs.num_virtual_allocated_ranges = 1;
|
||||||
|
|
||||||
#ifdef TRACE_MEMORY_MAP
|
#ifdef TRACE_MEMORY_MAP
|
||||||
|
|||||||
Reference in New Issue
Block a user