aboutsummaryrefslogtreecommitdiff
path: root/src/target
diff options
context:
space:
mode:
authorTomas Vanek <vanekt@fbl.cz>2022-05-26 11:33:27 +0200
committerTomas Vanek <vanekt@fbl.cz>2022-08-01 08:58:02 +0000
commit1d8bc131a69b0216de08a8a0339cd26236448a44 (patch)
tree18bc963389fff5017f314035ef93e3833024d97c /src/target
parent82e76262a13299f11d0a73418a8e76558761dccc (diff)
downloadriscv-openocd-1d8bc131a69b0216de08a8a0339cd26236448a44.zip
riscv-openocd-1d8bc131a69b0216de08a8a0339cd26236448a44.tar.gz
riscv-openocd-1d8bc131a69b0216de08a8a0339cd26236448a44.tar.bz2
target/riscv: add common magic
Add common_magic member to struct riscv_info. Introduce is_riscv() helper. Change-Id: I1af05988ad869342ba5dc6d4d0ba0ec6a8bf7bc7 Signed-off-by: Tomas Vanek <vanekt@fbl.cz> Reviewed-on: https://review.openocd.org/c/openocd/+/6999 Tested-by: jenkins Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com> Reviewed-by: Tim Newsome <tim@sifive.com>
Diffstat (limited to 'src/target')
-rw-r--r--src/target/riscv/riscv.c3
-rw-r--r--src/target/riscv/riscv.h9
2 files changed, 12 insertions, 0 deletions
diff --git a/src/target/riscv/riscv.c b/src/target/riscv/riscv.c
index ecccead..42fc374 100644
--- a/src/target/riscv/riscv.c
+++ b/src/target/riscv/riscv.c
@@ -3202,6 +3202,9 @@ struct target_type riscv_target = {
void riscv_info_init(struct target *target, struct riscv_info *r)
{
memset(r, 0, sizeof(*r));
+
+ r->common_magic = RISCV_COMMON_MAGIC;
+
r->dtm_version = 1;
r->current_hartid = target->coreid;
r->version_specific = NULL;
diff --git a/src/target/riscv/riscv.h b/src/target/riscv/riscv.h
index efbd71c..fcb1380 100644
--- a/src/target/riscv/riscv.h
+++ b/src/target/riscv/riscv.h
@@ -13,6 +13,8 @@ struct riscv_program;
#include "target/semihosting_common.h"
#include <helper/command.h>
+#define RISCV_COMMON_MAGIC 0x52495356U
+
/* The register cache is statically allocated. */
#define RISCV_MAX_HARTS 1024
#define RISCV_MAX_REGISTERS 5000
@@ -86,6 +88,8 @@ typedef struct {
} range_list_t;
struct riscv_info {
+ unsigned int common_magic;
+
unsigned dtm_version;
struct command_context *cmd_ctx;
@@ -269,6 +273,11 @@ static inline struct riscv_info *riscv_info(const struct target *target)
}
#define RISCV_INFO(R) struct riscv_info *R = riscv_info(target);
+static inline bool is_riscv(const struct riscv_info *riscv_info)
+{
+ return riscv_info->common_magic == RISCV_COMMON_MAGIC;
+}
+
extern uint8_t ir_dtmcontrol[4];
extern struct scan_field select_dtmcontrol;
extern uint8_t ir_dbus[4];