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 { typedef struct addr_range {
addr_t start; uint64 start;
size_t size; uint64 size;
} addr_range; } addr_range;
@@ -27,13 +27,13 @@ extern "C" {
#endif #endif
status_t insert_address_range(addr_range* ranges, uint32* _numRanges, 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, status_t remove_address_range(addr_range* ranges, uint32* _numRanges,
uint32 maxRanges, addr_t start, size_t size); uint32 maxRanges, uint64 start, uint64 size);
bool get_free_address_range(addr_range* ranges, uint32 numRanges, addr_t base, bool get_free_address_range(addr_range* ranges, uint32 numRanges, uint64 base,
size_t size, addr_t* _rangeBase); uint64 size, uint64* _rangeBase);
bool is_address_range_covered(addr_range* ranges, uint32 numRanges, addr_t base, bool is_address_range_covered(addr_range* ranges, uint32 numRanges, uint64 base,
size_t size); uint64 size);
void sort_address_ranges(addr_range* ranges, uint32 numRanges); void sort_address_ranges(addr_range* ranges, uint32 numRanges);
status_t insert_physical_address_range(phys_addr_range* ranges, 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_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_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(); void ignore_physical_memory_ranges_beyond_4gb();
#ifdef __cplusplus #ifdef __cplusplus
+1 -1
View File
@@ -58,7 +58,7 @@ typedef struct kernel_args {
addr_range cpu_kstack[MAX_BOOT_CPUS]; addr_range cpu_kstack[MAX_BOOT_CPUS];
// boot volume KMessage data // boot volume KMessage data
void *boot_volume; uint64 boot_volume;
int32 boot_volume_size; int32 boot_volume_size;
struct driver_settings_file *driver_settings; 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"); dprintf("allocated virt memory ranges:\n");
for (i = 0; i < gKernelArgs.num_virtual_allocated_ranges; i++) { 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 #endif
+11 -11
View File
@@ -280,36 +280,36 @@ add_kernel_args_range(void* start, size_t size)
*/ */
extern "C" status_t extern "C" status_t
insert_address_range(addr_range* ranges, uint32* _numRanges, uint32 maxRanges, 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); maxRanges, start, size);
} }
extern "C" status_t extern "C" status_t
remove_address_range(addr_range* ranges, uint32* _numRanges, uint32 maxRanges, 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); maxRanges, start, size);
} }
bool bool
get_free_address_range(addr_range* ranges, uint32 numRanges, addr_t base, get_free_address_range(addr_range* ranges, uint32 numRanges, uint64 base,
size_t size, addr_t* _rangeBase) 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); size, _rangeBase);
} }
bool bool
is_address_range_covered(addr_range* ranges, uint32 numRanges, addr_t base, is_address_range_covered(addr_range* ranges, uint32 numRanges, uint64 base,
size_t size) 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); size);
} }
@@ -389,7 +389,7 @@ insert_physical_allocated_range(phys_addr_t start, phys_size_t size)
status_t 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, return insert_address_range(gKernelArgs.virtual_allocated_range,
&gKernelArgs.num_virtual_allocated_ranges, MAX_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); buffer = (void*)(((addr_t)buffer + 3) & ~(addr_t)0x3);
memcpy(buffer, gBootVolume.Buffer(), gBootVolume.ContentSize()); memcpy(buffer, gBootVolume.Buffer(), gBootVolume.ContentSize());
gKernelArgs.boot_volume = buffer; gKernelArgs.boot_volume = (addr_t)buffer;
gKernelArgs.boot_volume_size = gBootVolume.ContentSize(); gKernelArgs.boot_volume_size = gBootVolume.ContentSize();
// ToDo: cleanup, heap_release() etc. // ToDo: cleanup, heap_release() etc.
+1 -1
View File
@@ -526,7 +526,7 @@ mmu_init_for_kernel(void)
dprintf("allocated virt memory ranges:\n"); dprintf("allocated virt memory ranges:\n");
for (i = 0; i < gKernelArgs.num_virtual_allocated_ranges; i++) { 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 #endif
+1 -1
View File
@@ -526,7 +526,7 @@ mmu_init_for_kernel(void)
dprintf("allocated virt memory ranges:\n"); dprintf("allocated virt memory ranges:\n");
for (i = 0; i < gKernelArgs.num_virtual_allocated_ranges; i++) { 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 #endif
+2 -2
View File
@@ -593,8 +593,8 @@ mmu_init_for_kernel(void)
dprintf("allocated virt memory ranges:\n"); dprintf("allocated virt memory ranges:\n");
for (i = 0; i < gKernelArgs.num_virtual_allocated_ranges; i++) { for (i = 0; i < gKernelArgs.num_virtual_allocated_ranges; i++) {
dprintf(" base %#018" B_PRIxADDR ", length %#018" B_PRIxSIZE dprintf(" base %#018" B_PRIx64 ", length %#018" B_PRIx64 "\n",
"\n", gKernelArgs.virtual_allocated_range[i].start, gKernelArgs.virtual_allocated_range[i].start,
gKernelArgs.virtual_allocated_range[i].size); gKernelArgs.virtual_allocated_range[i].size);
} }
} }
@@ -88,7 +88,7 @@ find_physical_memory_ranges(size_t &total)
static bool static bool
is_virtual_allocated(void *address, size_t size) is_virtual_allocated(void *address, size_t size)
{ {
addr_t foundBase; uint64 foundBase;
return !get_free_address_range(gKernelArgs.virtual_allocated_range, return !get_free_address_range(gKernelArgs.virtual_allocated_range,
gKernelArgs.num_virtual_allocated_ranges, (addr_t)address, size, gKernelArgs.num_virtual_allocated_ranges, (addr_t)address, size,
&foundBase) || foundBase != (addr_t)address; &foundBase) || foundBase != (addr_t)address;
@@ -281,7 +281,7 @@ find_free_virtual_range(void *base, size_t size)
void *firstFound = NULL; void *firstFound = NULL;
void *firstBaseFound = NULL; void *firstBaseFound = NULL;
for (uint32 i = 0; i < gKernelArgs.num_virtual_allocated_ranges; i++) { 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); + gKernelArgs.virtual_allocated_range[i].size);
if (!is_virtual_allocated(address, size)) { if (!is_virtual_allocated(address, size)) {
if (!base) if (!base)
@@ -170,7 +170,7 @@ find_physical_memory_ranges(size_t &total)
static bool static bool
is_virtual_allocated(void *address, size_t size) is_virtual_allocated(void *address, size_t size)
{ {
addr_t foundBase; uint64 foundBase;
return !get_free_address_range(gKernelArgs.virtual_allocated_range, return !get_free_address_range(gKernelArgs.virtual_allocated_range,
gKernelArgs.num_virtual_allocated_ranges, (addr_t)address, size, gKernelArgs.num_virtual_allocated_ranges, (addr_t)address, size,
&foundBase) || foundBase != (addr_t)address; &foundBase) || foundBase != (addr_t)address;
@@ -462,7 +462,7 @@ find_free_virtual_range(void *base, size_t size)
void *firstFound = NULL; void *firstFound = NULL;
void *firstBaseFound = NULL; void *firstBaseFound = NULL;
for (uint32 i = 0; i < gKernelArgs.num_virtual_allocated_ranges; i++) { 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); + gKernelArgs.virtual_allocated_range[i].size);
if (!is_virtual_allocated(address, size)) { if (!is_virtual_allocated(address, size)) {
if (!base) if (!base)
@@ -591,7 +591,7 @@ mmu_init_for_kernel(void)
dprintf("allocated virt memory ranges:\n"); dprintf("allocated virt memory ranges:\n");
for (i = 0; i < gKernelArgs.num_virtual_allocated_ranges; i++) { 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].start,
gKernelArgs.virtual_allocated_range[i].size); 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"); dprintf("allocated virt memory ranges:\n");
for (i = 0; i < gKernelArgs.num_virtual_allocated_ranges; i++) { 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].start,
gKernelArgs.virtual_allocated_range[i].size); 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++) { for (uint32 i = 0; i < args->num_virtual_allocated_ranges; i++) {
addr_t start = args->virtual_allocated_range[i].start; addr_t start = args->virtual_allocated_range[i].start;
addr_t end = start + args->virtual_allocated_range[i].size; 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 #endif
@@ -97,7 +97,7 @@ arch_vm_translation_map_init(kernel_args *args,
for (uint32 i = 0; i < args->num_virtual_allocated_ranges; i++) { for (uint32 i = 0; i < args->num_virtual_allocated_ranges; i++) {
addr_t start = args->virtual_allocated_range[i].start; addr_t start = args->virtual_allocated_range[i].start;
addr_t end = start + args->virtual_allocated_range[i].size; 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 #endif
switch (arch_mmu_type) { 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++) { for (uint32 i = 0; i < args->num_virtual_allocated_ranges; i++) {
addr_t start = args->virtual_allocated_range[i].start; addr_t start = args->virtual_allocated_range[i].start;
addr_t end = start + args->virtual_allocated_range[i].size; 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 #endif
+1 -1
View File
@@ -325,7 +325,7 @@ static status_t
get_boot_partitions(kernel_args* args, PartitionStack& partitions) get_boot_partitions(kernel_args* args, PartitionStack& partitions)
{ {
KMessage bootVolume; 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"); dprintf("get_boot_partitions(): boot volume message:\n");
bootVolume.Dump(&dprintf); bootVolume.Dump(&dprintf);
+6 -6
View File
@@ -3585,7 +3585,7 @@ vm_free_kernel_args(kernel_args* args)
TRACE(("vm_free_kernel_args()\n")); TRACE(("vm_free_kernel_args()\n"));
for (i = 0; i < args->num_kernel_args_ranges; i++) { 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) if (area >= B_OK)
delete_area(area); delete_area(area);
} }
@@ -3598,7 +3598,7 @@ allocate_kernel_args(kernel_args* args)
TRACE(("allocate_kernel_args()\n")); TRACE(("allocate_kernel_args()\n"));
for (uint32 i = 0; i < args->num_kernel_args_ranges; i++) { 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, create_area("_kernel args_", &address, B_EXACT_ADDRESS,
args->kernel_args_range[i].size, B_ALREADY_WIRED, 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++) { for (uint32 i = 0; i < args->num_virtual_allocated_ranges; i++) {
vm_unreserve_address_range(VMAddressSpace::KernelID(), 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); args->virtual_allocated_range[i].size);
} }
} }
@@ -3626,13 +3626,13 @@ reserve_boot_loader_ranges(kernel_args* args)
TRACE(("reserve_boot_loader_ranges()\n")); TRACE(("reserve_boot_loader_ranges()\n"));
for (uint32 i = 0; i < args->num_virtual_allocated_ranges; i++) { 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 // If the address is no kernel address, we just skip it. The
// architecture specific code has to deal with it. // architecture specific code has to deal with it.
if (!IS_KERNEL_ADDRESS(address)) { if (!IS_KERNEL_ADDRESS(address)) {
dprintf("reserve_boot_loader_ranges(): Skipping range: %p, %lu\n", dprintf("reserve_boot_loader_ranges(): Skipping range: %p, %"
address, args->virtual_allocated_range[i].size); B_PRIu64 "\n", address, args->virtual_allocated_range[i].size);
continue; continue;
} }