Copy vmapi source files from Hafnium tree on build.

This saves checking in two copies of the same file which then need to
be updated.

Change-Id: I4867ceb3978c3fb029b1a540594c748dd890b6f1
diff --git a/Makefile b/Makefile
index 8c53612..0add537 100644
--- a/Makefile
+++ b/Makefile
@@ -19,7 +19,8 @@
 obj-m += hafnium.o
 
 hafnium-y += main.o
-hafnium-y += hf_call.o
+hafnium-y += vmlib/aarch64/call.o
+hafnium-y += vmlib/spci.o
 
 ccflags-y = -I$(HAFNIUM_PATH)/inc/vmapi -I$(M)/inc
 
@@ -31,12 +32,14 @@
 CHECKPATCH ?= $(KERNEL_PATH)/scripts/checkpatch.pl -q
 
 all:
+	cp -r $(HAFNIUM_PATH)/vmlib/ $(CURDIR)
 	make -C $(KERNEL_PATH) HAFNIUM_PATH=$(HAFNIUM_PATH) M=$(CURDIR) O=$(O) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) modules
 
 clean:
 	make -C $(KERNEL_PATH) HAFNIUM_PATH=$(HAFNIUM_PATH) M=$(CURDIR) O=$(O) clean
+	rm -rf vmlib
 
 checkpatch:
-	$(CHECKPATCH) -f main.c hf_call.c
+	$(CHECKPATCH) -f main.c
 
 endif
diff --git a/hf_call.c b/hf_call.c
deleted file mode 100644
index 3d11e0e..0000000
--- a/hf_call.c
+++ /dev/null
@@ -1,65 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-/*
- * Copyright 2019 The Hafnium Authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "hf/call.h"
-#include "hf/spci.h"
-#include "hf/types.h"
-
-int64_t hf_call(uint64_t arg0, uint64_t arg1, uint64_t arg2, uint64_t arg3)
-{
-	register uint64_t r0 __asm__("x0") = arg0;
-	register uint64_t r1 __asm__("x1") = arg1;
-	register uint64_t r2 __asm__("x2") = arg2;
-	register uint64_t r3 __asm__("x3") = arg3;
-
-	__asm__ volatile(
-		"hvc #0"
-		: /* Output registers, also used as inputs ('+' constraint). */
-		"+r"(r0), "+r"(r1), "+r"(r2), "+r"(r3)
-		:
-		: /* Clobber registers. */
-		"x4", "x5", "x6", "x7");
-
-	return r0;
-}
-
-struct spci_value spci_call(struct spci_value args)
-{
-	register uint64_t r0 __asm__("x0") = args.func;
-	register uint64_t r1 __asm__("x1") = args.arg1;
-	register uint64_t r2 __asm__("x2") = args.arg2;
-	register uint64_t r3 __asm__("x3") = args.arg3;
-	register uint64_t r4 __asm__("x4") = args.arg4;
-	register uint64_t r5 __asm__("x5") = args.arg5;
-	register uint64_t r6 __asm__("x6") = args.arg6;
-	register uint64_t r7 __asm__("x7") = args.arg7;
-
-	__asm__ volatile(
-		"hvc #0"
-		: /* Output registers, also used as inputs ('+' constraint). */
-		"+r"(r0), "+r"(r1), "+r"(r2), "+r"(r3), "+r"(r4), "+r"(r5),
-		"+r"(r6), "+r"(r7));
-
-	return (struct spci_value){.func = r0,
-				   .arg1 = r1,
-				   .arg2 = r2,
-				   .arg3 = r3,
-				   .arg4 = r4,
-				   .arg5 = r5,
-				   .arg6 = r6,
-				   .arg7 = r7};
-}