* platform_allocate_region() has a new boolean parameter "exactAddress"
specifying whether only the exact supplied address is acceptable. If
false, the address is considered a hint only. It will be picked, if
available, otherwise a greater address is tried to be acquired, and
as last resort any address. This feature is only implemented for PPC.
It is needed since the preferred kernel text base address 0x80000000
might not be available (and actually isn't on my Mac mini).
* Fixed a bug in the PPC memory management code:
is_{virtual,physical}_allocated() were checking whether the given
range was completely contained by an existing range instead of
checking for intersection. As a consequence we could (and did) allocate
a range intersecting with already allocated ranges. The kernel segment
thus overwrote OF memory for instance.
* The ELF loader makes sure that it got both text and data segment of
the image to be loaded.
The PPC boot loader successfully loads kernel and modules now. Next
comes the hard part, I'm afraid.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15708 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -25,7 +25,8 @@ extern void platform_release_heap(struct stage2_args *args, void *base);
|
||||
extern status_t platform_init_heap(struct stage2_args *args, void **_base, void **_top);
|
||||
|
||||
/* MMU/memory functions */
|
||||
extern status_t platform_allocate_region(void **_virtualAddress, size_t size, uint8 protection);
|
||||
extern status_t platform_allocate_region(void **_virtualAddress, size_t size,
|
||||
uint8 protection, bool exactAddress);
|
||||
extern status_t platform_free_region(void *address, size_t size);
|
||||
|
||||
/* boot options */
|
||||
|
||||
Reference in New Issue
Block a user