aboutsummaryrefslogtreecommitdiffstats
path: root/tests/tcg/aarch64/semicall.h
diff options
context:
space:
mode:
Diffstat (limited to 'tests/tcg/aarch64/semicall.h')
-rw-r--r--tests/tcg/aarch64/semicall.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/tests/tcg/aarch64/semicall.h b/tests/tcg/aarch64/semicall.h
new file mode 100644
index 000000000..8a3fce35c
--- /dev/null
+++ b/tests/tcg/aarch64/semicall.h
@@ -0,0 +1,18 @@
+/*
+ * Semihosting Tests - AArch64 helper
+ *
+ * Copyright (c) 2019
+ * 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("x0") = type;
+ register uintptr_t a0 asm("x1") = arg0;
+ asm("hlt 0xf000"
+ : "=r" (t)
+ : "r" (t), "r" (a0));
+ return t;
+}