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:
Alex Smith
2012-06-20 14:11:24 +01:00
parent 93cb9538be
commit 192af9e0af
17 changed files with 44 additions and 44 deletions
+9 -9
View File
@@ -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
+1 -1
View File
@@ -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;
+1 -1
View File
@@ -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
+11 -11
View File
@@ -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,
+1 -1
View File
@@ -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.
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+3 -3
View File
@@ -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);
}
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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);
+6 -6
View File
@@ -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;
}