Changed addr_range to use uint64.
I've tested this change on x86, causing no issues. I've checked over the code for all other platforms and made the necessary changes and to the best of my knowledge they should also still work, but I haven't actually built and tested them. Once I've completed the kernel_args changes the other platforms will need testing.
This commit is contained in:
@@ -11,8 +11,8 @@
|
||||
|
||||
|
||||
typedef struct addr_range {
|
||||
addr_t start;
|
||||
size_t size;
|
||||
uint64 start;
|
||||
uint64 size;
|
||||
} addr_range;
|
||||
|
||||
|
||||
@@ -27,13 +27,13 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
status_t insert_address_range(addr_range* ranges, uint32* _numRanges,
|
||||
uint32 maxRanges, addr_t start, size_t size);
|
||||
uint32 maxRanges, uint64 start, uint64 size);
|
||||
status_t remove_address_range(addr_range* ranges, uint32* _numRanges,
|
||||
uint32 maxRanges, addr_t start, size_t size);
|
||||
bool get_free_address_range(addr_range* ranges, uint32 numRanges, addr_t base,
|
||||
size_t size, addr_t* _rangeBase);
|
||||
bool is_address_range_covered(addr_range* ranges, uint32 numRanges, addr_t base,
|
||||
size_t size);
|
||||
uint32 maxRanges, uint64 start, uint64 size);
|
||||
bool get_free_address_range(addr_range* ranges, uint32 numRanges, uint64 base,
|
||||
uint64 size, uint64* _rangeBase);
|
||||
bool is_address_range_covered(addr_range* ranges, uint32 numRanges, uint64 base,
|
||||
uint64 size);
|
||||
void sort_address_ranges(addr_range* ranges, uint32 numRanges);
|
||||
|
||||
status_t insert_physical_address_range(phys_addr_range* ranges,
|
||||
@@ -48,7 +48,7 @@ void sort_physical_address_ranges(phys_addr_range* ranges, uint32 numRanges);
|
||||
|
||||
status_t insert_physical_memory_range(phys_addr_t start, phys_size_t size);
|
||||
status_t insert_physical_allocated_range(phys_addr_t start, phys_size_t size);
|
||||
status_t insert_virtual_allocated_range(addr_t start, size_t size);
|
||||
status_t insert_virtual_allocated_range(uint64 start, uint64 size);
|
||||
void ignore_physical_memory_ranges_beyond_4gb();
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -58,7 +58,7 @@ typedef struct kernel_args {
|
||||
addr_range cpu_kstack[MAX_BOOT_CPUS];
|
||||
|
||||
// boot volume KMessage data
|
||||
void *boot_volume;
|
||||
uint64 boot_volume;
|
||||
int32 boot_volume_size;
|
||||
|
||||
struct driver_settings_file *driver_settings;
|
||||
|
||||
@@ -526,7 +526,7 @@ mmu_init_for_kernel(void)
|
||||
|
||||
dprintf("allocated virt memory ranges:\n");
|
||||
for (i = 0; i < gKernelArgs.num_virtual_allocated_ranges; i++) {
|
||||
dprintf(" base 0x%08lx, length 0x%08lx\n", gKernelArgs.virtual_allocated_range[i].start, gKernelArgs.virtual_allocated_range[i].size);
|
||||
dprintf(" base 0x%08" B_PRIx64 ", length 0x%08" B_PRIx64 "\n", gKernelArgs.virtual_allocated_range[i].start, gKernelArgs.virtual_allocated_range[i].size);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -280,36 +280,36 @@ add_kernel_args_range(void* start, size_t size)
|
||||
*/
|
||||
extern "C" status_t
|
||||
insert_address_range(addr_range* ranges, uint32* _numRanges, uint32 maxRanges,
|
||||
addr_t start, size_t size)
|
||||
uint64 start, uint64 size)
|
||||
{
|
||||
return insert_range<addr_range, addr_t, size_t>(ranges, _numRanges,
|
||||
return insert_range<addr_range, uint64, uint64>(ranges, _numRanges,
|
||||
maxRanges, start, size);
|
||||
}
|
||||
|
||||
|
||||
extern "C" status_t
|
||||
remove_address_range(addr_range* ranges, uint32* _numRanges, uint32 maxRanges,
|
||||
addr_t start, size_t size)
|
||||
uint64 start, uint64 size)
|
||||
{
|
||||
return remove_range<addr_range, addr_t, size_t>(ranges, _numRanges,
|
||||
return remove_range<addr_range, uint64, uint64>(ranges, _numRanges,
|
||||
maxRanges, start, size);
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
get_free_address_range(addr_range* ranges, uint32 numRanges, addr_t base,
|
||||
size_t size, addr_t* _rangeBase)
|
||||
get_free_address_range(addr_range* ranges, uint32 numRanges, uint64 base,
|
||||
uint64 size, uint64* _rangeBase)
|
||||
{
|
||||
return get_free_range<addr_range, addr_t, size_t>(ranges, numRanges, base,
|
||||
return get_free_range<addr_range, uint64, uint64>(ranges, numRanges, base,
|
||||
size, _rangeBase);
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
is_address_range_covered(addr_range* ranges, uint32 numRanges, addr_t base,
|
||||
size_t size)
|
||||
is_address_range_covered(addr_range* ranges, uint32 numRanges, uint64 base,
|
||||
uint64 size)
|
||||
{
|
||||
return is_range_covered<addr_range, addr_t, size_t>(ranges, numRanges, base,
|
||||
return is_range_covered<addr_range, uint64, uint64>(ranges, numRanges, base,
|
||||
size);
|
||||
}
|
||||
|
||||
@@ -389,7 +389,7 @@ insert_physical_allocated_range(phys_addr_t start, phys_size_t size)
|
||||
|
||||
|
||||
status_t
|
||||
insert_virtual_allocated_range(addr_t start, size_t size)
|
||||
insert_virtual_allocated_range(uint64 start, uint64 size)
|
||||
{
|
||||
return insert_address_range(gKernelArgs.virtual_allocated_range,
|
||||
&gKernelArgs.num_virtual_allocated_ranges, MAX_VIRTUAL_ALLOCATED_RANGE,
|
||||
|
||||
@@ -128,7 +128,7 @@ main(stage2_args *args)
|
||||
|
||||
buffer = (void*)(((addr_t)buffer + 3) & ~(addr_t)0x3);
|
||||
memcpy(buffer, gBootVolume.Buffer(), gBootVolume.ContentSize());
|
||||
gKernelArgs.boot_volume = buffer;
|
||||
gKernelArgs.boot_volume = (addr_t)buffer;
|
||||
gKernelArgs.boot_volume_size = gBootVolume.ContentSize();
|
||||
|
||||
// ToDo: cleanup, heap_release() etc.
|
||||
|
||||
@@ -526,7 +526,7 @@ mmu_init_for_kernel(void)
|
||||
|
||||
dprintf("allocated virt memory ranges:\n");
|
||||
for (i = 0; i < gKernelArgs.num_virtual_allocated_ranges; i++) {
|
||||
dprintf(" base 0x%08lx, length 0x%08lx\n", gKernelArgs.virtual_allocated_range[i].start, gKernelArgs.virtual_allocated_range[i].size);
|
||||
dprintf(" base 0x%08" B_PRIx64 ", length 0x%08" B_PRIx64 "\n", gKernelArgs.virtual_allocated_range[i].start, gKernelArgs.virtual_allocated_range[i].size);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -526,7 +526,7 @@ mmu_init_for_kernel(void)
|
||||
|
||||
dprintf("allocated virt memory ranges:\n");
|
||||
for (i = 0; i < gKernelArgs.num_virtual_allocated_ranges; i++) {
|
||||
dprintf(" base 0x%08lx, length 0x%08lx\n", gKernelArgs.virtual_allocated_range[i].start, gKernelArgs.virtual_allocated_range[i].size);
|
||||
dprintf(" base 0x%08" B_PRIx64 ", length 0x%08" B_PRIx64 "\n", gKernelArgs.virtual_allocated_range[i].start, gKernelArgs.virtual_allocated_range[i].size);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -593,9 +593,9 @@ mmu_init_for_kernel(void)
|
||||
|
||||
dprintf("allocated virt memory ranges:\n");
|
||||
for (i = 0; i < gKernelArgs.num_virtual_allocated_ranges; i++) {
|
||||
dprintf(" base %#018" B_PRIxADDR ", length %#018" B_PRIxSIZE
|
||||
"\n", gKernelArgs.virtual_allocated_range[i].start,
|
||||
gKernelArgs.virtual_allocated_range[i].size);
|
||||
dprintf(" base %#018" B_PRIx64 ", length %#018" B_PRIx64 "\n",
|
||||
gKernelArgs.virtual_allocated_range[i].start,
|
||||
gKernelArgs.virtual_allocated_range[i].size);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -88,7 +88,7 @@ find_physical_memory_ranges(size_t &total)
|
||||
static bool
|
||||
is_virtual_allocated(void *address, size_t size)
|
||||
{
|
||||
addr_t foundBase;
|
||||
uint64 foundBase;
|
||||
return !get_free_address_range(gKernelArgs.virtual_allocated_range,
|
||||
gKernelArgs.num_virtual_allocated_ranges, (addr_t)address, size,
|
||||
&foundBase) || foundBase != (addr_t)address;
|
||||
@@ -281,7 +281,7 @@ find_free_virtual_range(void *base, size_t size)
|
||||
void *firstFound = NULL;
|
||||
void *firstBaseFound = NULL;
|
||||
for (uint32 i = 0; i < gKernelArgs.num_virtual_allocated_ranges; i++) {
|
||||
void *address = (void *)(gKernelArgs.virtual_allocated_range[i].start
|
||||
void *address = (void *)(addr_t)(gKernelArgs.virtual_allocated_range[i].start
|
||||
+ gKernelArgs.virtual_allocated_range[i].size);
|
||||
if (!is_virtual_allocated(address, size)) {
|
||||
if (!base)
|
||||
|
||||
@@ -170,7 +170,7 @@ find_physical_memory_ranges(size_t &total)
|
||||
static bool
|
||||
is_virtual_allocated(void *address, size_t size)
|
||||
{
|
||||
addr_t foundBase;
|
||||
uint64 foundBase;
|
||||
return !get_free_address_range(gKernelArgs.virtual_allocated_range,
|
||||
gKernelArgs.num_virtual_allocated_ranges, (addr_t)address, size,
|
||||
&foundBase) || foundBase != (addr_t)address;
|
||||
@@ -462,7 +462,7 @@ find_free_virtual_range(void *base, size_t size)
|
||||
void *firstFound = NULL;
|
||||
void *firstBaseFound = NULL;
|
||||
for (uint32 i = 0; i < gKernelArgs.num_virtual_allocated_ranges; i++) {
|
||||
void *address = (void *)(gKernelArgs.virtual_allocated_range[i].start
|
||||
void *address = (void *)(addr_t)(gKernelArgs.virtual_allocated_range[i].start
|
||||
+ gKernelArgs.virtual_allocated_range[i].size);
|
||||
if (!is_virtual_allocated(address, size)) {
|
||||
if (!base)
|
||||
|
||||
@@ -591,7 +591,7 @@ mmu_init_for_kernel(void)
|
||||
|
||||
dprintf("allocated virt memory ranges:\n");
|
||||
for (i = 0; i < gKernelArgs.num_virtual_allocated_ranges; i++) {
|
||||
dprintf(" base 0x%08lx, length 0x%08lx\n",
|
||||
dprintf(" base 0x%08" B_PRIx64 ", length 0x%08" B_PRIx64 "\n",
|
||||
gKernelArgs.virtual_allocated_range[i].start,
|
||||
gKernelArgs.virtual_allocated_range[i].size);
|
||||
}
|
||||
|
||||
@@ -585,7 +585,7 @@ mmu_init_for_kernel(void)
|
||||
|
||||
dprintf("allocated virt memory ranges:\n");
|
||||
for (i = 0; i < gKernelArgs.num_virtual_allocated_ranges; i++) {
|
||||
dprintf(" base 0x%08lx, length 0x%08lx\n",
|
||||
dprintf(" base 0x%08" B_PRIx64 ", length 0x%08" B_PRIx64 "\n",
|
||||
gKernelArgs.virtual_allocated_range[i].start,
|
||||
gKernelArgs.virtual_allocated_range[i].size);
|
||||
}
|
||||
|
||||
@@ -71,7 +71,7 @@ arch_vm_translation_map_init(kernel_args *args,
|
||||
for (uint32 i = 0; i < args->num_virtual_allocated_ranges; i++) {
|
||||
addr_t start = args->virtual_allocated_range[i].start;
|
||||
addr_t end = start + args->virtual_allocated_range[i].size;
|
||||
TRACE(" %#10" B_PRIxADDR " - %#10" B_PRIxADDR "\n", start, end);
|
||||
TRACE(" %#10" B_PRIx64 " - %#10" B_PRIx64 "\n", start, end);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@@ -97,7 +97,7 @@ arch_vm_translation_map_init(kernel_args *args,
|
||||
for (uint32 i = 0; i < args->num_virtual_allocated_ranges; i++) {
|
||||
addr_t start = args->virtual_allocated_range[i].start;
|
||||
addr_t end = start + args->virtual_allocated_range[i].size;
|
||||
TRACE(" %#10" B_PRIxADDR " - %#10" B_PRIxADDR "\n", start, end);
|
||||
TRACE(" %#10" B_PRIx64 " - %#10" B_PRIx64 "\n", start, end);
|
||||
}
|
||||
#endif
|
||||
switch (arch_mmu_type) {
|
||||
|
||||
@@ -70,7 +70,7 @@ arch_vm_translation_map_init(kernel_args *args,
|
||||
for (uint32 i = 0; i < args->num_virtual_allocated_ranges; i++) {
|
||||
addr_t start = args->virtual_allocated_range[i].start;
|
||||
addr_t end = start + args->virtual_allocated_range[i].size;
|
||||
TRACE(" %#10" B_PRIxADDR " - %#10" B_PRIxADDR "\n", start, end);
|
||||
TRACE(" %#10" B_PRIx64 " - %#10" B_PRIx64 "\n", start, end);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@@ -325,7 +325,7 @@ static status_t
|
||||
get_boot_partitions(kernel_args* args, PartitionStack& partitions)
|
||||
{
|
||||
KMessage bootVolume;
|
||||
bootVolume.SetTo(args->boot_volume, args->boot_volume_size);
|
||||
bootVolume.SetTo((void *)(addr_t)args->boot_volume, args->boot_volume_size);
|
||||
|
||||
dprintf("get_boot_partitions(): boot volume message:\n");
|
||||
bootVolume.Dump(&dprintf);
|
||||
|
||||
@@ -3585,7 +3585,7 @@ vm_free_kernel_args(kernel_args* args)
|
||||
TRACE(("vm_free_kernel_args()\n"));
|
||||
|
||||
for (i = 0; i < args->num_kernel_args_ranges; i++) {
|
||||
area_id area = area_for((void*)args->kernel_args_range[i].start);
|
||||
area_id area = area_for((void*)(addr_t)args->kernel_args_range[i].start);
|
||||
if (area >= B_OK)
|
||||
delete_area(area);
|
||||
}
|
||||
@@ -3598,7 +3598,7 @@ allocate_kernel_args(kernel_args* args)
|
||||
TRACE(("allocate_kernel_args()\n"));
|
||||
|
||||
for (uint32 i = 0; i < args->num_kernel_args_ranges; i++) {
|
||||
void* address = (void*)args->kernel_args_range[i].start;
|
||||
void* address = (void*)(addr_t)args->kernel_args_range[i].start;
|
||||
|
||||
create_area("_kernel args_", &address, B_EXACT_ADDRESS,
|
||||
args->kernel_args_range[i].size, B_ALREADY_WIRED,
|
||||
@@ -3614,7 +3614,7 @@ unreserve_boot_loader_ranges(kernel_args* args)
|
||||
|
||||
for (uint32 i = 0; i < args->num_virtual_allocated_ranges; i++) {
|
||||
vm_unreserve_address_range(VMAddressSpace::KernelID(),
|
||||
(void*)args->virtual_allocated_range[i].start,
|
||||
(void*)(addr_t)args->virtual_allocated_range[i].start,
|
||||
args->virtual_allocated_range[i].size);
|
||||
}
|
||||
}
|
||||
@@ -3626,13 +3626,13 @@ reserve_boot_loader_ranges(kernel_args* args)
|
||||
TRACE(("reserve_boot_loader_ranges()\n"));
|
||||
|
||||
for (uint32 i = 0; i < args->num_virtual_allocated_ranges; i++) {
|
||||
void* address = (void*)args->virtual_allocated_range[i].start;
|
||||
void* address = (void*)(addr_t)args->virtual_allocated_range[i].start;
|
||||
|
||||
// If the address is no kernel address, we just skip it. The
|
||||
// architecture specific code has to deal with it.
|
||||
if (!IS_KERNEL_ADDRESS(address)) {
|
||||
dprintf("reserve_boot_loader_ranges(): Skipping range: %p, %lu\n",
|
||||
address, args->virtual_allocated_range[i].size);
|
||||
dprintf("reserve_boot_loader_ranges(): Skipping range: %p, %"
|
||||
B_PRIu64 "\n", address, args->virtual_allocated_range[i].size);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user