From 192af9e0afd2f3d0cbaf5c935480343a70c8ff53 Mon Sep 17 00:00:00 2001 From: Alex Smith Date: Wed, 20 Jun 2012 14:11:24 +0100 Subject: [PATCH] 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. --- headers/private/kernel/boot/addr_range.h | 18 +++++++-------- headers/private/kernel/boot/kernel_args.h | 2 +- src/system/boot/arch/m68k/mmu.cpp | 2 +- src/system/boot/loader/kernel_args.cpp | 22 +++++++++---------- src/system/boot/loader/main.cpp | 2 +- src/system/boot/platform/amiga_m68k/mmu.cpp | 2 +- src/system/boot/platform/atari_m68k/mmu.cpp | 2 +- src/system/boot/platform/bios_ia32/mmu.cpp | 6 ++--- src/system/boot/platform/cfe/arch/ppc/mmu.cpp | 4 ++-- .../platform/openfirmware/arch/ppc/mmu.cpp | 4 ++-- .../boot/platform/raspberrypi_arm/mmu.cpp | 2 +- src/system/boot/platform/u-boot/mmu.cpp | 2 +- .../arch/arm/arch_vm_translation_map.cpp | 2 +- .../arch/m68k/arch_vm_translation_map.cpp | 2 +- .../arch/x86/arch_vm_translation_map.cpp | 2 +- src/system/kernel/fs/vfs_boot.cpp | 2 +- src/system/kernel/vm/vm.cpp | 12 +++++----- 17 files changed, 44 insertions(+), 44 deletions(-) diff --git a/headers/private/kernel/boot/addr_range.h b/headers/private/kernel/boot/addr_range.h index 1aa80e7d5a..67129eb452 100644 --- a/headers/private/kernel/boot/addr_range.h +++ b/headers/private/kernel/boot/addr_range.h @@ -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 diff --git a/headers/private/kernel/boot/kernel_args.h b/headers/private/kernel/boot/kernel_args.h index a6356590e9..1922ae673d 100644 --- a/headers/private/kernel/boot/kernel_args.h +++ b/headers/private/kernel/boot/kernel_args.h @@ -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; diff --git a/src/system/boot/arch/m68k/mmu.cpp b/src/system/boot/arch/m68k/mmu.cpp index 9c459b1e88..776fd99e1f 100644 --- a/src/system/boot/arch/m68k/mmu.cpp +++ b/src/system/boot/arch/m68k/mmu.cpp @@ -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 diff --git a/src/system/boot/loader/kernel_args.cpp b/src/system/boot/loader/kernel_args.cpp index 9956e80017..0de1205a7e 100644 --- a/src/system/boot/loader/kernel_args.cpp +++ b/src/system/boot/loader/kernel_args.cpp @@ -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(ranges, _numRanges, + return insert_range(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(ranges, _numRanges, + return remove_range(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(ranges, numRanges, base, + return get_free_range(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(ranges, numRanges, base, + return is_range_covered(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, diff --git a/src/system/boot/loader/main.cpp b/src/system/boot/loader/main.cpp index 63a78a1e9a..2af8c86316 100644 --- a/src/system/boot/loader/main.cpp +++ b/src/system/boot/loader/main.cpp @@ -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. diff --git a/src/system/boot/platform/amiga_m68k/mmu.cpp b/src/system/boot/platform/amiga_m68k/mmu.cpp index b71af83067..230b967f38 100644 --- a/src/system/boot/platform/amiga_m68k/mmu.cpp +++ b/src/system/boot/platform/amiga_m68k/mmu.cpp @@ -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 diff --git a/src/system/boot/platform/atari_m68k/mmu.cpp b/src/system/boot/platform/atari_m68k/mmu.cpp index 434c4623aa..404886bd2a 100644 --- a/src/system/boot/platform/atari_m68k/mmu.cpp +++ b/src/system/boot/platform/atari_m68k/mmu.cpp @@ -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 diff --git a/src/system/boot/platform/bios_ia32/mmu.cpp b/src/system/boot/platform/bios_ia32/mmu.cpp index a808be9eaf..4c6a0c8423 100644 --- a/src/system/boot/platform/bios_ia32/mmu.cpp +++ b/src/system/boot/platform/bios_ia32/mmu.cpp @@ -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 diff --git a/src/system/boot/platform/cfe/arch/ppc/mmu.cpp b/src/system/boot/platform/cfe/arch/ppc/mmu.cpp index b06114fc68..2f9b2a021d 100644 --- a/src/system/boot/platform/cfe/arch/ppc/mmu.cpp +++ b/src/system/boot/platform/cfe/arch/ppc/mmu.cpp @@ -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) diff --git a/src/system/boot/platform/openfirmware/arch/ppc/mmu.cpp b/src/system/boot/platform/openfirmware/arch/ppc/mmu.cpp index 0d3e0d2810..bbe11265ce 100644 --- a/src/system/boot/platform/openfirmware/arch/ppc/mmu.cpp +++ b/src/system/boot/platform/openfirmware/arch/ppc/mmu.cpp @@ -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) diff --git a/src/system/boot/platform/raspberrypi_arm/mmu.cpp b/src/system/boot/platform/raspberrypi_arm/mmu.cpp index bf1d3d6c2f..18c39f5a39 100644 --- a/src/system/boot/platform/raspberrypi_arm/mmu.cpp +++ b/src/system/boot/platform/raspberrypi_arm/mmu.cpp @@ -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); } diff --git a/src/system/boot/platform/u-boot/mmu.cpp b/src/system/boot/platform/u-boot/mmu.cpp index bab74229fd..e38d931171 100644 --- a/src/system/boot/platform/u-boot/mmu.cpp +++ b/src/system/boot/platform/u-boot/mmu.cpp @@ -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); } diff --git a/src/system/kernel/arch/arm/arch_vm_translation_map.cpp b/src/system/kernel/arch/arm/arch_vm_translation_map.cpp index faad4bf263..02a042b355 100644 --- a/src/system/kernel/arch/arm/arch_vm_translation_map.cpp +++ b/src/system/kernel/arch/arm/arch_vm_translation_map.cpp @@ -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 diff --git a/src/system/kernel/arch/m68k/arch_vm_translation_map.cpp b/src/system/kernel/arch/m68k/arch_vm_translation_map.cpp index 176f0f11a3..fc211d688a 100644 --- a/src/system/kernel/arch/m68k/arch_vm_translation_map.cpp +++ b/src/system/kernel/arch/m68k/arch_vm_translation_map.cpp @@ -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) { diff --git a/src/system/kernel/arch/x86/arch_vm_translation_map.cpp b/src/system/kernel/arch/x86/arch_vm_translation_map.cpp index aa20762e29..7b16d09c43 100644 --- a/src/system/kernel/arch/x86/arch_vm_translation_map.cpp +++ b/src/system/kernel/arch/x86/arch_vm_translation_map.cpp @@ -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 diff --git a/src/system/kernel/fs/vfs_boot.cpp b/src/system/kernel/fs/vfs_boot.cpp index b8240d71f2..ac039fb0be 100644 --- a/src/system/kernel/fs/vfs_boot.cpp +++ b/src/system/kernel/fs/vfs_boot.cpp @@ -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); diff --git a/src/system/kernel/vm/vm.cpp b/src/system/kernel/vm/vm.cpp index 27ee5991b8..783872f5e5 100644 --- a/src/system/kernel/vm/vm.cpp +++ b/src/system/kernel/vm/vm.cpp @@ -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; }