According to the spec we need to set it before taking over the MMU, but we can't call it before arch_mmu_init(), since we need the OF to allocate the page table. So we do it after we have allocated the new page table. * Added PPC specific kernel_args: The virtual address ranges we want to keep in the kernel. We fill that in with the translations we find when initializing the MMU stuff. We remove the memory the boot loader occupies from those. Besides the stack for the boot loader only the OF stuff remains. * arch_mmu_allocate() now starts to search at KERNEL_BASE for a free virtual address when no particular address is requested. This saves us further trouble in the kernel, since those allocations would need to be remapped otherwise. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15780 a95241bf-73f2-0310-859d-f6bbb57e9c96
31 lines
957 B
C
31 lines
957 B
C
/*
|
|
** Copyright 2003, Axel Dörfler, [email protected]. All rights reserved.
|
|
** Distributed under the terms of the OpenBeOS License.
|
|
*/
|
|
#ifndef KERNEL_ARCH_PPC_KERNEL_ARGS_H
|
|
#define KERNEL_ARCH_PPC_KERNEL_ARGS_H
|
|
|
|
#ifndef KERNEL_BOOT_KERNEL_ARGS_H
|
|
# error This file is included from <boot/kernel_args.h> only
|
|
#endif
|
|
|
|
#define _PACKED __attribute__((packed))
|
|
|
|
#define MAX_VIRTUAL_RANGES_TO_KEEP 32
|
|
|
|
// kernel args
|
|
typedef struct {
|
|
// architecture specific
|
|
addr_range page_table; // virtual address and size of the page table
|
|
addr_range exception_handlers;
|
|
addr_range framebuffer; // maps where the framebuffer is located, in physical memory
|
|
int screen_x, screen_y, screen_depth;
|
|
|
|
// The virtual ranges we want to keep in the kernel. E.g. those belonging
|
|
// to the Open Firmware.
|
|
uint32 num_virtual_ranges_to_keep;
|
|
addr_range virtual_ranges_to_keep[MAX_VIRTUAL_RANGES_TO_KEEP];
|
|
} arch_kernel_args;
|
|
|
|
#endif /* KERNEL_ARCH_PPC_KERNEL_ARGS_H */
|