aboutsummaryrefslogtreecommitdiff
path: root/tests/tcg/riscv64
diff options
context:
space:
mode:
authorAlex Bennée <alex.bennee@linaro.org>2021-03-23 16:52:51 +0000
committerAlex Bennée <alex.bennee@linaro.org>2021-03-24 14:25:03 +0000
commit3539d84df15a29bb72d6d1eb2c39908681056d51 (patch)
treeec2ef5bf72a0e89d954ee249c805c310537e0666 /tests/tcg/riscv64
parent320d0bca94b4650c8fe6b02c6f24ad461f47eed8 (diff)
semihosting: move semihosting tests to multiarch
It may be arm-compat-semihosting but more than one architecture uses it so lets move the tests into the multiarch area. We gate it on the feature and split the semicall.h header between the arches. Also clean-up a bit of the Makefile messing about to one common set of runners. Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20210323165308.15244-6-alex.bennee@linaro.org>
Diffstat (limited to 'tests/tcg/riscv64')
-rw-r--r--tests/tcg/riscv64/semicall.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/tests/tcg/riscv64/semicall.h b/tests/tcg/riscv64/semicall.h
new file mode 100644
index 0000000000..f8c88f32dc
--- /dev/null
+++ b/tests/tcg/riscv64/semicall.h
@@ -0,0 +1,22 @@
+/*
+ * Semihosting Tests - RiscV64 Helper
+ *
+ * Copyright (c) 2021
+ * Written by Alex Bennée <alex.bennee@linaro.org>
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
+uintptr_t __semi_call(uintptr_t type, uintptr_t arg0)
+{
+ register uintptr_t t asm("a0") = type;
+ register uintptr_t a0 asm("a1") = arg0;
+ asm(".option norvc\n\t"
+ ".balign 16\n\t"
+ "slli zero, zero, 0x1f\n\t"
+ "ebreak\n\t"
+ "srai zero, zero, 0x7\n\t"
+ : "=r" (t)
+ : "r" (t), "r" (a0));
+ return t;
+}