From Alex von Gluck IV <kallisti5@xxxxxxxxxxx>:
Alex von Gluck IV has uploaded this change for review. (
https://review.haiku-os.org/c/haiku/+/2450 ;)
Change subject: efi: fix pointer width on non-64-bit platforms
......................................................................
efi: fix pointer width on non-64-bit platforms
Change-Id: I041238af87df3e1e3a967216685413801fd49877
---
M headers/private/kernel/boot/platform.h
M src/system/boot/loader/kernel_args.cpp
M src/system/boot/platform/efi/mmu.cpp
M src/system/boot/platform/efi/mmu.h
4 files changed, 18 insertions(+), 18 deletions(-)
git pull ssh://git.haiku-os.org:22/haiku refs/changes/50/2450/1
diff --git a/headers/private/kernel/boot/platform.h
b/headers/private/kernel/boot/platform.h
index 3c28b73..c30fcff 100644
--- a/headers/private/kernel/boot/platform.h
+++ b/headers/private/kernel/boot/platform.h
@@ -28,8 +28,8 @@
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);
-extern status_t platform_bootloader_address_to_kernel_address(void *address,
uint64_t *_result);
-extern status_t platform_kernel_address_to_bootloader_address(uint64_t
address, void **_result);
+extern status_t platform_bootloader_address_to_kernel_address(void *address,
addr_t *_result);
+extern status_t platform_kernel_address_to_bootloader_address(addr_t address,
void **_result);
/* boot options */
#define BOOT_OPTION_MENU 1
diff --git a/src/system/boot/loader/kernel_args.cpp
b/src/system/boot/loader/kernel_args.cpp
index a5ddc2b..53504c8 100644
--- a/src/system/boot/loader/kernel_args.cpp
+++ b/src/system/boot/loader/kernel_args.cpp
@@ -371,7 +371,7 @@
}
#ifdef _BOOT_PLATFORM_EFI
- uint64 translated_block;
+ addr_t translated_block;
platform_bootloader_address_to_kernel_address(block,
&translated_block);
if (add_kernel_args_range((void *)translated_block, size) !=
B_OK)
#else
@@ -392,7 +392,7 @@
sLast = block;
sFree = kChunkSize - size;
#ifdef _BOOT_PLATFORM_EFI
- uint64 translated_block;
+ addr_t translated_block;
platform_bootloader_address_to_kernel_address(block, &translated_block);
if (add_kernel_args_range((void *)translated_block, kChunkSize) != B_OK)
#else
diff --git a/src/system/boot/platform/efi/mmu.cpp
b/src/system/boot/platform/efi/mmu.cpp
index 75fcd10..c9d953e 100644
--- a/src/system/boot/platform/efi/mmu.cpp
+++ b/src/system/boot/platform/efi/mmu.cpp
@@ -19,8 +19,8 @@
struct allocated_memory_region {
allocated_memory_region *next;
- uint64_t vaddr;
- uint64_t paddr;
+ addr_t vaddr;
+ addr_t paddr;
size_t size;
bool released;
};
@@ -38,7 +38,7 @@
static allocated_memory_region *allocated_memory_regions = NULL;
-extern "C" uint64_t
+extern "C" addr_t
mmu_allocate_page()
{
efi_physical_addr addr;
@@ -111,7 +111,7 @@
region->released = false;
if (*_address != NULL) {
- region->vaddr = (uint64_t)*_address;
+ region->vaddr = (addr_t)*_address;
}
//dprintf("Allocated region %#lx (requested %p) %#lx %lu\n",
region->vaddr, *_address, region->paddr, region->size);
@@ -167,7 +167,7 @@
get_region(void *address, size_t size)
{
for (allocated_memory_region *region = allocated_memory_regions;
region; region = region->next) {
- if (region->paddr == (uint64_t)address && region->size == size)
{
+ if (region->paddr == (addr_t)address && region->size == size) {
return region;
}
}
@@ -208,12 +208,12 @@
extern "C" status_t
-platform_bootloader_address_to_kernel_address(void *address, uint64_t *_result)
+platform_bootloader_address_to_kernel_address(void *address, addr_t *_result)
{
// Convert any physical ranges prior to looking up address
convert_physical_ranges();
- uint64_t addr = (uint64_t)address;
+ addr_t addr = (addr_t)address;
for (allocated_memory_region *region = allocated_memory_regions;
region; region = region->next) {
if (region->paddr <= addr && addr < region->paddr +
region->size) {
@@ -233,7 +233,7 @@
extern "C" status_t
-platform_kernel_address_to_bootloader_address(uint64_t address, void **_result)
+platform_kernel_address_to_bootloader_address(addr_t address, void **_result)
{
for (allocated_memory_region *region = allocated_memory_regions;
region; region = region->next) {
if (region->vaddr != 0 && region->vaddr <= address && address <
region->vaddr + region->size) {
diff --git a/src/system/boot/platform/efi/mmu.h
b/src/system/boot/platform/efi/mmu.h
index a7e5d83..5168afc 100644
--- a/src/system/boot/platform/efi/mmu.h
+++ b/src/system/boot/platform/efi/mmu.h
@@ -34,18 +34,18 @@
extern void mmu_init();
-extern uint64_t mmu_allocate_page();
+extern addr_t mmu_allocate_page();
extern addr_t mmu_map_physical_memory(addr_t physicalAddress, size_t size,
uint32 flags);
extern void mmu_free(void *virtualAddress, size_t size);
-extern status_t platform_kernel_address_to_bootloader_address(uint64_t address,
+extern status_t platform_kernel_address_to_bootloader_address(addr_t address,
void **_result);
extern status_t platform_bootloader_address_to_kernel_address(void *address,
- uint64_t *_result);
+ addr_t *_result);
#ifdef __cplusplus
}
@@ -53,10 +53,10 @@
/*! Convert a 32-bit address to a 64-bit address. */
-inline uint64
-fix_address(uint64 address)
+inline addr_t
+fix_address(addr_t address)
{
- uint64 result;
+ addr_t result;
if (platform_bootloader_address_to_kernel_address((void *)address,
&result)
!= B_OK) {
return address;
--
To view, visit https://review.haiku-os.org/c/haiku/+/2450
To unsubscribe, or for help writing mail filters, visit
https://review.haiku-os.org/settings
Gerrit-Project: haiku
Gerrit-Branch: master
Gerrit-Change-Id: I041238af87df3e1e3a967216685413801fd49877
Gerrit-Change-Number: 2450
Gerrit-PatchSet: 1
Gerrit-Owner: Alex von Gluck IV <kallisti5@xxxxxxxxxxx>
Gerrit-MessageType: newchange