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>
This commit is contained in:
parent
82e76262a1
commit
1d8bc131a6
|
@ -3202,6 +3202,9 @@ struct target_type riscv_target = {
|
||||||
void riscv_info_init(struct target *target, struct riscv_info *r)
|
void riscv_info_init(struct target *target, struct riscv_info *r)
|
||||||
{
|
{
|
||||||
memset(r, 0, sizeof(*r));
|
memset(r, 0, sizeof(*r));
|
||||||
|
|
||||||
|
r->common_magic = RISCV_COMMON_MAGIC;
|
||||||
|
|
||||||
r->dtm_version = 1;
|
r->dtm_version = 1;
|
||||||
r->current_hartid = target->coreid;
|
r->current_hartid = target->coreid;
|
||||||
r->version_specific = NULL;
|
r->version_specific = NULL;
|
||||||
|
|
|
@ -13,6 +13,8 @@ struct riscv_program;
|
||||||
#include "target/semihosting_common.h"
|
#include "target/semihosting_common.h"
|
||||||
#include <helper/command.h>
|
#include <helper/command.h>
|
||||||
|
|
||||||
|
#define RISCV_COMMON_MAGIC 0x52495356U
|
||||||
|
|
||||||
/* The register cache is statically allocated. */
|
/* The register cache is statically allocated. */
|
||||||
#define RISCV_MAX_HARTS 1024
|
#define RISCV_MAX_HARTS 1024
|
||||||
#define RISCV_MAX_REGISTERS 5000
|
#define RISCV_MAX_REGISTERS 5000
|
||||||
|
@ -86,6 +88,8 @@ typedef struct {
|
||||||
} range_list_t;
|
} range_list_t;
|
||||||
|
|
||||||
struct riscv_info {
|
struct riscv_info {
|
||||||
|
unsigned int common_magic;
|
||||||
|
|
||||||
unsigned dtm_version;
|
unsigned dtm_version;
|
||||||
|
|
||||||
struct command_context *cmd_ctx;
|
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);
|
#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 uint8_t ir_dtmcontrol[4];
|
||||||
extern struct scan_field select_dtmcontrol;
|
extern struct scan_field select_dtmcontrol;
|
||||||
extern uint8_t ir_dbus[4];
|
extern uint8_t ir_dbus[4];
|
||||||
|
|
Loading…
Reference in New Issue