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.

Differential Revision: https://reviews.freebsd.org/D23660
This commit is contained in:
imp 2020-02-20 00:46:16 +00:00
parent 006804e44f
commit d796054bd9
4 changed files with 17 additions and 9 deletions

View File

@ -852,7 +852,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[])

View File

@ -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

View File

@ -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)
{

View File

@ -452,4 +452,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 */