[PATCH 07/15] efi: types: implement efi_phys_to_virt/efi_virt_to_phys helpers

Ahmad Fatoum a.fatoum at barebox.org
Tue May 27 14:22:52 PDT 2025


From: Ahmad Fatoum <ahmad at a3f.at>

We shouldn't have any physical addresses exceeding 32-bit on 64-bit
systems, especially as barebox doesn't implement ARM32 LPAE.

Add helpers to convert between the types to be able to drop casts and
checks in the code.

Signed-off-by: Ahmad Fatoum <a.fatoum at barebox.org>
---
 include/efi/types.h | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/include/efi/types.h b/include/efi/types.h
index c845d08d62b6..85aaf32f8f1d 100644
--- a/include/efi/types.h
+++ b/include/efi/types.h
@@ -2,7 +2,11 @@
 #ifndef _EFI_TYPES_H_
 #define _EFI_TYPES_H_
 
+#ifndef __ASSEMBLY__
+
 #include <linux/types.h>
+#include <linux/limits.h>
+#include <linux/stddef.h>
 #include <linux/compiler.h>
 #include <linux/uuid.h>
 
@@ -65,4 +69,17 @@ union efi_ip_address {
 	struct efi_ipv6_address v6;
 };
 
+static inline void *efi_phys_to_virt(efi_physical_addr_t addr)
+{
+	if (addr > UINTPTR_MAX)
+		__builtin_trap();
+
+	return (void *)(uintptr_t)addr;
+}
+
+static inline efi_physical_addr_t efi_virt_to_phys(const void *addr)
+{
+	return (uintptr_t)addr;
+}
+
 #endif
-- 
2.39.5




More information about the barebox mailing list