svn commit: r261941 - projects/arm64/sys/boot/arm64/efi
Andrew Turner
andrew at FreeBSD.org
Sat Feb 15 18:06:50 UTC 2014
Author: andrew
Date: Sat Feb 15 18:06:49 2014
New Revision: 261941
URL: http://svnweb.freebsd.org/changeset/base/261941
Log:
Add arm64_efi_translate to get a physical address from a kernel virtual
address.
Modified:
projects/arm64/sys/boot/arm64/efi/copy.c
projects/arm64/sys/boot/arm64/efi/libarm64.h
Modified: projects/arm64/sys/boot/arm64/efi/copy.c
==============================================================================
--- projects/arm64/sys/boot/arm64/efi/copy.c Sat Feb 15 17:59:32 2014 (r261940)
+++ projects/arm64/sys/boot/arm64/efi/copy.c Sat Feb 15 18:06:49 2014 (r261941)
@@ -52,7 +52,7 @@ arm64_efi_copy_init(void)
status = BS->AllocatePages(AllocateAnyPages, EfiLoaderData,
STAGE_PAGES, &staging);
if (EFI_ERROR(status)) {
- printf("failed to allocate staging area: %d\n",
+ printf("failed to allocate staging area: %ld\n",
status & EFI_ERROR_MASK);
return (status);
}
@@ -60,6 +60,13 @@ arm64_efi_copy_init(void)
return (0);
}
+void *
+arm64_efi_translate(vm_offset_t ptr)
+{
+
+ return ((void *)(ptr + stage_offset));
+}
+
ssize_t
arm64_efi_copyin(const void *src, vm_offset_t dest, const size_t len)
{
@@ -69,7 +76,7 @@ arm64_efi_copyin(const void *src, vm_off
stage_offset_set = 1;
}
- bcopy(src, (void *)(dest + stage_offset), len);
+ bcopy(src, arm64_efi_translate(dest), len);
return (len);
}
@@ -77,7 +84,7 @@ ssize_t
arm64_efi_copyout(const vm_offset_t src, void *dest, const size_t len)
{
- bcopy((void *)(src + stage_offset), dest, len);
+ bcopy(arm64_efi_translate(src), dest, len);
return (len);
}
Modified: projects/arm64/sys/boot/arm64/efi/libarm64.h
==============================================================================
--- projects/arm64/sys/boot/arm64/efi/libarm64.h Sat Feb 15 17:59:32 2014 (r261940)
+++ projects/arm64/sys/boot/arm64/efi/libarm64.h Sat Feb 15 18:06:49 2014 (r261941)
@@ -36,6 +36,7 @@ int arm64_setcurrdev(struct env_var *ev,
/* copy.c */
int arm64_efi_copy_init(void);
+void *arm64_efi_translate(vm_offset_t ptr);
ssize_t arm64_efi_copyin(const void *src, vm_offset_t dest, const size_t len);
ssize_t arm64_efi_copyout(const vm_offset_t src, void *dest, const size_t len);
ssize_t arm64_efi_readin(const int fd, vm_offset_t dest, const size_t len);
More information about the svn-src-projects
mailing list