Message ID | 20230613205857.495165-18-dbarboza@ventanamicro.com |
---|---|
State | New |
Headers | show |
Series | target/riscv, KVM: fixes and enhancements | expand |
On Tue, Jun 13, 2023 at 05:58:56PM -0300, Daniel Henrique Barboza wrote: > There are 2 places in which we need to get a pointer to a certain > property of the cpu->cfg struct based on property offset. Next patch > will add a couple more. > > Create a helper to avoid repeating this code over and over. > > Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> > --- > target/riscv/kvm.c | 11 +++++++---- > 1 file changed, 7 insertions(+), 4 deletions(-) > > diff --git a/target/riscv/kvm.c b/target/riscv/kvm.c > index 0b6dff70de..3a9f7b0722 100644 > --- a/target/riscv/kvm.c > +++ b/target/riscv/kvm.c > @@ -222,11 +222,15 @@ static KVMCPUConfig kvm_multi_ext_cfgs[] = { > KVM_EXT_CFG("svpbmt", ext_svpbmt, KVM_RISCV_ISA_EXT_SVPBMT), > }; > > +static void *kvmconfig_get_cfg_addr(RISCVCPU *cpu, KVMCPUConfig *kvmcfg) > +{ > + return (void *)&cpu->cfg + kvmcfg->offset; > +} > + > static void kvm_cpu_cfg_set(RISCVCPU *cpu, KVMCPUConfig *multi_ext, > uint32_t val) > { > - int cpu_cfg_offset = multi_ext->offset; > - bool *ext_enabled = (void *)&cpu->cfg + cpu_cfg_offset; > + bool *ext_enabled = kvmconfig_get_cfg_addr(cpu, multi_ext); > > *ext_enabled = val; > } > @@ -234,8 +238,7 @@ static void kvm_cpu_cfg_set(RISCVCPU *cpu, KVMCPUConfig *multi_ext, > static uint32_t kvm_cpu_cfg_get(RISCVCPU *cpu, > KVMCPUConfig *multi_ext) > { > - int cpu_cfg_offset = multi_ext->offset; > - bool *ext_enabled = (void *)&cpu->cfg + cpu_cfg_offset; > + bool *ext_enabled = kvmconfig_get_cfg_addr(cpu, multi_ext); > > return *ext_enabled; > } > -- > 2.40.1 > Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
diff --git a/target/riscv/kvm.c b/target/riscv/kvm.c index 0b6dff70de..3a9f7b0722 100644 --- a/target/riscv/kvm.c +++ b/target/riscv/kvm.c @@ -222,11 +222,15 @@ static KVMCPUConfig kvm_multi_ext_cfgs[] = { KVM_EXT_CFG("svpbmt", ext_svpbmt, KVM_RISCV_ISA_EXT_SVPBMT), }; +static void *kvmconfig_get_cfg_addr(RISCVCPU *cpu, KVMCPUConfig *kvmcfg) +{ + return (void *)&cpu->cfg + kvmcfg->offset; +} + static void kvm_cpu_cfg_set(RISCVCPU *cpu, KVMCPUConfig *multi_ext, uint32_t val) { - int cpu_cfg_offset = multi_ext->offset; - bool *ext_enabled = (void *)&cpu->cfg + cpu_cfg_offset; + bool *ext_enabled = kvmconfig_get_cfg_addr(cpu, multi_ext); *ext_enabled = val; } @@ -234,8 +238,7 @@ static void kvm_cpu_cfg_set(RISCVCPU *cpu, KVMCPUConfig *multi_ext, static uint32_t kvm_cpu_cfg_get(RISCVCPU *cpu, KVMCPUConfig *multi_ext) { - int cpu_cfg_offset = multi_ext->offset; - bool *ext_enabled = (void *)&cpu->cfg + cpu_cfg_offset; + bool *ext_enabled = kvmconfig_get_cfg_addr(cpu, multi_ext); return *ext_enabled; }
There are 2 places in which we need to get a pointer to a certain property of the cpu->cfg struct based on property offset. Next patch will add a couple more. Create a helper to avoid repeating this code over and over. Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> --- target/riscv/kvm.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-)