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;
#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
} range_list_t;
struct riscv_info {
+ unsigned int common_magic;
+
unsigned dtm_version;
struct command_context *cmd_ctx;
}
#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];