git: 19f8884afeb8 - stable/12 - Create ptov() function.

From: Kyle Evans <kevans_at_FreeBSD.org>
Date: Fri, 08 Oct 2021 06:10:34 UTC
The branch stable/12 has been updated by kevans:

URL: https://cgit.FreeBSD.org/src/commit/?id=19f8884afeb822d3cde7915dd1f4e231ffc443b3

commit 19f8884afeb822d3cde7915dd1f4e231ffc443b3
Author:     Warner Losh <imp@FreeBSD.org>
AuthorDate: 2020-02-20 00:46:16 +0000
Commit:     Kyle Evans <kevans@FreeBSD.org>
CommitDate: 2021-10-08 02:42:05 +0000

    Create ptov() function.
    
    Create a ptov() function. It's basically the same as the btx PTOV
    macro, but works everywhere. smbios needs this to translate addresses,
    but the translation differs between BIOS booting and EFI booting. Make
    it a function so one smbios.o can be used everywhere. Provide
    definitions for it in the two loaders affected.
    
    (cherry picked from commit ed2a65769a5d04fcfc2acff3fa11d6b69394fd88)
---
 stand/efi/loader/main.c     | 6 +++++-
 stand/i386/libi386/smbios.c | 9 +--------
 stand/i386/loader/main.c    | 6 ++++++
 stand/libsa/stand.h         | 5 +++++
 4 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/stand/efi/loader/main.c b/stand/efi/loader/main.c
index b7225965a383..b391f091b1e4 100644
--- a/stand/efi/loader/main.c
+++ b/stand/efi/loader/main.c
@@ -882,7 +882,11 @@ read_loader_env(const char *name, char *def_fn, bool once)
 	}
 }
 
-
+caddr_t
+ptov(uintptr_t x)
+{
+	return ((caddr_t)x);
+}
 
 EFI_STATUS
 main(int argc, CHAR16 *argv[])
diff --git a/stand/i386/libi386/smbios.c b/stand/i386/libi386/smbios.c
index 2aa62fa85df7..c621114d9107 100644
--- a/stand/i386/libi386/smbios.c
+++ b/stand/i386/libi386/smbios.c
@@ -28,16 +28,9 @@
 __FBSDID("$FreeBSD$");
 
 #include <stand.h>
-#include <bootstrap.h>
 #include <sys/endian.h>
 
-#ifdef EFI
-/* In EFI, we don't need PTOV(). */
-#define PTOV(x)		(caddr_t)(x)
-#else
-#include "btxv86.h"
-#endif
-#include "smbios.h"
+#define PTOV(x)		ptov(x)
 
 /*
  * Detect SMBIOS and export information about the SMBIOS into the
diff --git a/stand/i386/loader/main.c b/stand/i386/loader/main.c
index 5265769cd0d9..67d1fe1b2b20 100644
--- a/stand/i386/loader/main.c
+++ b/stand/i386/loader/main.c
@@ -86,6 +86,12 @@ extern char end[];
 static void *heap_top;
 static void *heap_bottom;
 
+caddr_t
+ptov(uintptr_t x)
+{
+	return (PTOV(x));
+}
+
 int
 main(void)
 {
diff --git a/stand/libsa/stand.h b/stand/libsa/stand.h
index 81b1882d71f0..14e1703326a4 100644
--- a/stand/libsa/stand.h
+++ b/stand/libsa/stand.h
@@ -453,4 +453,9 @@ const char *x86_hypervisor(void);
 #define reallocf(x, y)	Reallocf(x, y, NULL, 0)
 #endif
 
+/*
+ * va <-> pa routines. MD code must supply.
+ */
+caddr_t ptov(uintptr_t);
+
 #endif	/* STAND_H */