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};
-}