aboutsummaryrefslogtreecommitdiff
path: root/src/target/armv8.c
diff options
context:
space:
mode:
authorOmair Javaid <omair.javaid@linaro.org>2018-05-23 17:43:47 +0500
committerMatthias Welwarsky <matthias@welwarsky.de>2018-07-13 09:18:14 +0100
commita7da117ad6bc1749863c14fdeef2bd4898620574 (patch)
tree31b2b0cec75fd5647b7cda5c448d811916d22482 /src/target/armv8.c
parentd04254196e383965627d4eab805f9b1b93240e69 (diff)
downloadriscv-openocd-a7da117ad6bc1749863c14fdeef2bd4898620574.zip
riscv-openocd-a7da117ad6bc1749863c14fdeef2bd4898620574.tar.gz
riscv-openocd-a7da117ad6bc1749863c14fdeef2bd4898620574.tar.bz2
Add ARM v8 AArch64 semihosting support
This patch implements semihosting support for AArch64. This picks code from previously submitted AArch64 semihosting support patch and rebases on top of reworked semihosting code. Tested in AArch64 mode on a Lemaker Hikey Board with NewLib and GDB. Change-Id: I228a38f1de24f79e49ba99d8514d822a28c2950b Signed-off-by: Omair Javaid <omair.javaid@linaro.org> Reviewed-on: http://openocd.zylin.com/4537 Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
Diffstat (limited to 'src/target/armv8.c')
-rw-r--r--src/target/armv8.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/target/armv8.c b/src/target/armv8.c
index 20f2b67..83f5530 100644
--- a/src/target/armv8.c
+++ b/src/target/armv8.c
@@ -1017,11 +1017,24 @@ int armv8_handle_cache_info_command(struct command_context *cmd_ctx,
return ERROR_OK;
}
+static int armv8_setup_semihosting(struct target *target, int enable)
+{
+ struct arm *arm = target_to_arm(target);
+
+ if (arm->core_state != ARM_STATE_AARCH64) {
+ LOG_ERROR("semihosting only supported in AArch64 state\n");
+ return ERROR_FAIL;
+ }
+
+ return ERROR_OK;
+}
+
int armv8_init_arch_info(struct target *target, struct armv8_common *armv8)
{
struct arm *arm = &armv8->arm;
arm->arch_info = armv8;
target->arch_info = &armv8->arm;
+ arm->setup_semihosting = armv8_setup_semihosting;
/* target is useful in all function arm v4 5 compatible */
armv8->arm.target = target;
armv8->arm.common_magic = ARM_COMMON_MAGIC;