target/riscv/kvm: add RISCV_CONFIG_REG()
Create a RISCV_CONFIG_REG() macro, similar to what other regs use, to hide away some of the boilerplate. Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> Reviewed-by: Andrew Jones <ajones@ventanamicro.com> Message-ID: <20231208183835.2411523-5-dbarboza@ventanamicro.com> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
parent
10f86d1b84
commit
f25974f46a
@ -88,6 +88,10 @@ static uint64_t kvm_riscv_reg_id_u64(uint64_t type, uint64_t idx)
|
|||||||
#define RISCV_CSR_REG(env, name) kvm_riscv_reg_id(env, KVM_REG_RISCV_CSR, \
|
#define RISCV_CSR_REG(env, name) kvm_riscv_reg_id(env, KVM_REG_RISCV_CSR, \
|
||||||
KVM_REG_RISCV_CSR_REG(name))
|
KVM_REG_RISCV_CSR_REG(name))
|
||||||
|
|
||||||
|
#define RISCV_CONFIG_REG(env, name) \
|
||||||
|
kvm_riscv_reg_id(env, KVM_REG_RISCV_CONFIG, \
|
||||||
|
KVM_REG_RISCV_CONFIG_REG(name))
|
||||||
|
|
||||||
#define RISCV_TIMER_REG(name) kvm_riscv_reg_id_u64(KVM_REG_RISCV_TIMER, \
|
#define RISCV_TIMER_REG(name) kvm_riscv_reg_id_u64(KVM_REG_RISCV_TIMER, \
|
||||||
KVM_REG_RISCV_TIMER_REG(name))
|
KVM_REG_RISCV_TIMER_REG(name))
|
||||||
|
|
||||||
@ -756,24 +760,21 @@ static void kvm_riscv_init_machine_ids(RISCVCPU *cpu, KVMScratchCPU *kvmcpu)
|
|||||||
struct kvm_one_reg reg;
|
struct kvm_one_reg reg;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
reg.id = kvm_riscv_reg_id(env, KVM_REG_RISCV_CONFIG,
|
reg.id = RISCV_CONFIG_REG(env, mvendorid);
|
||||||
KVM_REG_RISCV_CONFIG_REG(mvendorid));
|
|
||||||
reg.addr = (uint64_t)&cpu->cfg.mvendorid;
|
reg.addr = (uint64_t)&cpu->cfg.mvendorid;
|
||||||
ret = ioctl(kvmcpu->cpufd, KVM_GET_ONE_REG, ®);
|
ret = ioctl(kvmcpu->cpufd, KVM_GET_ONE_REG, ®);
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
error_report("Unable to retrieve mvendorid from host, error %d", ret);
|
error_report("Unable to retrieve mvendorid from host, error %d", ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
reg.id = kvm_riscv_reg_id(env, KVM_REG_RISCV_CONFIG,
|
reg.id = RISCV_CONFIG_REG(env, marchid);
|
||||||
KVM_REG_RISCV_CONFIG_REG(marchid));
|
|
||||||
reg.addr = (uint64_t)&cpu->cfg.marchid;
|
reg.addr = (uint64_t)&cpu->cfg.marchid;
|
||||||
ret = ioctl(kvmcpu->cpufd, KVM_GET_ONE_REG, ®);
|
ret = ioctl(kvmcpu->cpufd, KVM_GET_ONE_REG, ®);
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
error_report("Unable to retrieve marchid from host, error %d", ret);
|
error_report("Unable to retrieve marchid from host, error %d", ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
reg.id = kvm_riscv_reg_id(env, KVM_REG_RISCV_CONFIG,
|
reg.id = RISCV_CONFIG_REG(env, mimpid);
|
||||||
KVM_REG_RISCV_CONFIG_REG(mimpid));
|
|
||||||
reg.addr = (uint64_t)&cpu->cfg.mimpid;
|
reg.addr = (uint64_t)&cpu->cfg.mimpid;
|
||||||
ret = ioctl(kvmcpu->cpufd, KVM_GET_ONE_REG, ®);
|
ret = ioctl(kvmcpu->cpufd, KVM_GET_ONE_REG, ®);
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
@ -788,8 +789,7 @@ static void kvm_riscv_init_misa_ext_mask(RISCVCPU *cpu,
|
|||||||
struct kvm_one_reg reg;
|
struct kvm_one_reg reg;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
reg.id = kvm_riscv_reg_id(env, KVM_REG_RISCV_CONFIG,
|
reg.id = RISCV_CONFIG_REG(env, isa);
|
||||||
KVM_REG_RISCV_CONFIG_REG(isa));
|
|
||||||
reg.addr = (uint64_t)&env->misa_ext_mask;
|
reg.addr = (uint64_t)&env->misa_ext_mask;
|
||||||
ret = ioctl(kvmcpu->cpufd, KVM_GET_ONE_REG, ®);
|
ret = ioctl(kvmcpu->cpufd, KVM_GET_ONE_REG, ®);
|
||||||
|
|
||||||
@ -1092,8 +1092,7 @@ static int kvm_vcpu_set_machine_ids(RISCVCPU *cpu, CPUState *cs)
|
|||||||
uint64_t id;
|
uint64_t id;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
id = kvm_riscv_reg_id(env, KVM_REG_RISCV_CONFIG,
|
id = RISCV_CONFIG_REG(env, mvendorid);
|
||||||
KVM_REG_RISCV_CONFIG_REG(mvendorid));
|
|
||||||
/*
|
/*
|
||||||
* cfg.mvendorid is an uint32 but a target_ulong will
|
* cfg.mvendorid is an uint32 but a target_ulong will
|
||||||
* be written. Assign it to a target_ulong var to avoid
|
* be written. Assign it to a target_ulong var to avoid
|
||||||
@ -1105,15 +1104,13 @@ static int kvm_vcpu_set_machine_ids(RISCVCPU *cpu, CPUState *cs)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
id = kvm_riscv_reg_id(env, KVM_REG_RISCV_CONFIG,
|
id = RISCV_CONFIG_REG(env, marchid);
|
||||||
KVM_REG_RISCV_CONFIG_REG(marchid));
|
|
||||||
ret = kvm_set_one_reg(cs, id, &cpu->cfg.marchid);
|
ret = kvm_set_one_reg(cs, id, &cpu->cfg.marchid);
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
id = kvm_riscv_reg_id(env, KVM_REG_RISCV_CONFIG,
|
id = RISCV_CONFIG_REG(env, mimpid);
|
||||||
KVM_REG_RISCV_CONFIG_REG(mimpid));
|
|
||||||
ret = kvm_set_one_reg(cs, id, &cpu->cfg.mimpid);
|
ret = kvm_set_one_reg(cs, id, &cpu->cfg.mimpid);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
Loading…
Reference in New Issue
Block a user