target/riscv: add common magic
authorTomas Vanek <vanekt@fbl.cz>
Thu, 26 May 2022 09:33:27 +0000 (11:33 +0200)
committerTomas Vanek <vanekt@fbl.cz>
Mon, 1 Aug 2022 08:58:02 +0000 (08:58 +0000)
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>
src/target/riscv/riscv.c
src/target/riscv/riscv.h

index eccceade1919d169f4ec375af044515760fa8d7c..42fc3742f76f1ad53a866f564aa17fb3afba5d5c 100644 (file)
@@ -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;
index efbd71c327399188dfeaaf8ec24829613ba267e0..fcb1380d48df22bd3de4d0b6a45ec5b40b4c3532 100644 (file)
@@ -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];