Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 15 Feb 2014 18:06:49 +0000 (UTC)
From:      Andrew Turner <andrew@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r261941 - projects/arm64/sys/boot/arm64/efi
Message-ID:  <201402151806.s1FI6nlp038741@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201402151806.s1FI6nlp038741>