Index: boot/arch/arm64/include/arch/arch.h
===================================================================
--- boot/arch/arm64/include/arch/arch.h	(revision 95b7d4df17053b0cb97e9406f5af392aeab0f70b)
+++ boot/arch/arm64/include/arch/arch.h	(revision 400a16d0bdcef60cab1a36ca3c1231c9a546a6af)
@@ -41,6 +41,7 @@
 
 #define BOOT_OFFSET  0x80000
+
 #ifndef __ASSEMBLER__
-#define KA2PA(x)  (((uintptr_t) (x)) - UINT64_C(0xffffffff80000000))
+#define KA2PA(x)  (((uintptr_t) (x)) - UINT64_C(0xffffffff00000000))
 #endif
 
Index: boot/arch/arm64/meson.build
===================================================================
--- boot/arch/arm64/meson.build	(revision 95b7d4df17053b0cb97e9406f5af392aeab0f70b)
+++ boot/arch/arm64/meson.build	(revision 400a16d0bdcef60cab1a36ca3c1231c9a546a6af)
@@ -29,7 +29,14 @@
 BUILD = true
 
-POST_OUTPUT = 'image.iso'
-POSTBUILD = 'grub'
-GRUB_LOADER = 'chainloader'
+if MACHINE == 'virt'
+	POST_OUTPUT = 'image.iso'
+	POSTBUILD = 'grub'
+	GRUB_LOADER = 'chainloader'
+endif
+
+if MACHINE == 'hikey960'
+	POSTBUILD = 'raw'
+	POST_OUTPUT = 'image.boot'
+endif
 
 # Request binary output. The ARM64 port manually prepares the .text
