diff options
Diffstat (limited to 'tests/tcg/arm/semicall.h')
-rw-r--r-- | tests/tcg/arm/semicall.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/tests/tcg/arm/semicall.h b/tests/tcg/arm/semicall.h new file mode 100644 index 0000000000..624937c557 --- /dev/null +++ b/tests/tcg/arm/semicall.h @@ -0,0 +1,22 @@ +/* + * Semihosting Tests - ARM Helper + * + * Copyright (c) 2019, 2024 + * Written by Alex Bennée <alex.bennee@linaro.org> + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +uintptr_t __semi_call(uintptr_t type, uintptr_t arg0) +{ + register uintptr_t t asm("r0") = type; + register uintptr_t a0 asm("r1") = arg0; +#ifdef __thumb__ +# define SVC "svc 0xab" +#else +# define SVC "svc 0x123456" +#endif + asm(SVC : "=r" (t) + : "r" (t), "r" (a0)); + return t; +} |