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>