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