aboutsummaryrefslogtreecommitdiff
path: root/stand/efi/loader/arch
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2018-08-18 20:28:25 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2018-08-18 20:28:25 +0000
commit0b600ec4ae09fa3bcbbc824091a1a4926c443e35 (patch)
tree494d9f7e9cbaf432439899a1bff7e3bf7f87eceb /stand/efi/loader/arch
parent5cb9940ce252cc9380b9ebcd477bb279404b1b30 (diff)
downloadsrc-0b600ec4ae09fa3bcbbc824091a1a4926c443e35.tar.gz
src-0b600ec4ae09fa3bcbbc824091a1a4926c443e35.zip
Fix casts between 64-bit physical addresses and pointers in EFI.
Compiling FreeBSD/i386 with modern GCC triggers warnings for various places that convert 64-bit EFI_ADDRs to pointers and vice versa. - Cast pointers to uintptr_t rather than to uint64_t when assigning to a 64-bit integer. - Cast 64-bit integers to uintptr_t before a cast to a pointer. Reviewed by: kevans MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D16586
Notes
Notes: svn path=/head/; revision=338022
Diffstat (limited to 'stand/efi/loader/arch')
-rw-r--r--stand/efi/loader/arch/i386/efimd.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/stand/efi/loader/arch/i386/efimd.c b/stand/efi/loader/arch/i386/efimd.c
index 8e1d850d82cc..e3d8b1c64827 100644
--- a/stand/efi/loader/arch/i386/efimd.c
+++ b/stand/efi/loader/arch/i386/efimd.c
@@ -70,14 +70,14 @@ ldr_bootinfo(struct bootinfo *bi, uint64_t *bi_addr)
UINTN mmsz, pages, sz;
UINT32 mmver;
- bi->bi_systab = (uint64_t)ST;
- bi->bi_hcdp = (uint64_t)efi_get_table(&hcdp_guid);
+ bi->bi_systab = (uintptr_t)ST;
+ bi->bi_hcdp = (uintptr_t)efi_get_table(&hcdp_guid);
sz = sizeof(EFI_HANDLE);
status = BS->LocateHandle(ByProtocol, &fpswa_guid, 0, &sz, &handle);
if (status == 0)
status = BS->HandleProtocol(handle, &fpswa_guid, &fpswa);
- bi->bi_fpswa = (status == 0) ? (uint64_t)fpswa : 0;
+ bi->bi_fpswa = (status == 0) ? (uintptr_t)fpswa : 0;
bisz = (sizeof(struct bootinfo) + 0x0f) & ~0x0f;
@@ -109,7 +109,7 @@ ldr_bootinfo(struct bootinfo *bi, uint64_t *bi_addr)
* aligned).
*/
*bi_addr = addr;
- mm = (void *)(addr + bisz);
+ mm = (void *)(uintptr_t)(addr + bisz);
sz = (EFI_PAGE_SIZE * pages) - bisz;
status = BS->GetMemoryMap(&sz, mm, &mapkey, &mmsz, &mmver);
if (EFI_ERROR(status)) {
@@ -117,12 +117,12 @@ ldr_bootinfo(struct bootinfo *bi, uint64_t *bi_addr)
(long)status);
return (EINVAL);
}
- bi->bi_memmap = (uint64_t)mm;
+ bi->bi_memmap = (uintptr_t)mm;
bi->bi_memmap_size = sz;
bi->bi_memdesc_size = mmsz;
bi->bi_memdesc_version = mmver;
- bcopy(bi, (void *)(*bi_addr), sizeof(*bi));
+ bcopy(bi, (void *)(uintptr_t)(*bi_addr), sizeof(*bi));
return (0);
}